﻿
-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<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