-- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE PROCEDURE [dbo].[mfr__updt__#customvalues] @tblname as nvarchar(50) , @referencetable nvarchar(50) , @tgtid bigint AS BEGIN SET NOCOUNT ON; DECLARE @tmp [dbo].[mfr__tt__#customvalues]; DECLARE @tmp_cmd nvarchar(1000) = N'SELECT DISTINCT * FROM [' + @tblname + ']'; INSERT INTO @tmp EXECUTE [sp_executesql] @tmp_cmd; --WITH tmp as ( -- SELECT *, ROW_NUMBER() OVER (PARTITION BY [id],[Property] ORDER BY [version] DESC) as '#' FROM @tmp --), SOURCE as ( -- SELECT * FROM tmp WHERE [#] = 1 --) MERGE [dbo].[mfr__#customvalues] as TARGET USING @tmp as SOURCE ON TARGET.[Id] = SOURCE.[Id] AND TARGET.[EntityID] = SOURCE.[EntityID] AND TARGET.[Property] = SOURCE.[Property] AND TARGET.[Meta] = SOURCE.[Meta] WHEN MATCHED THEN UPDATE SET [Value] = SOURCE.[Value] WHEN NOT MATCHED BY TARGET THEN INSERT ( [Id] ,[EntityID] ,[Property] ,[Meta] ,[Value]) VALUES (SOURCE.[Id] ,SOURCE.[EntityID] ,SOURCE.[Property] ,SOURCE.[Meta] ,SOURCE.[Value]); END