-- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE PROCEDURE [dbo].[mfr__updt__*PartnerSet] @tblname as nvarchar(50) , @referencetable nvarchar(50) , @tgtid bigint AS BEGIN SET NOCOUNT ON; SET XACT_ABORT ON; BEGIN TRY DECLARE @tmp [dbo].[mfr__tt__*PartnerSet]; DECLARE @tmp_cmd nvarchar(1000) = N'SELECT DISTINCT * FROM [' + @tblname + ']'; INSERT INTO @tmp EXECUTE [sp_executesql] @tmp_cmd; BEGIN TRANSACTION; MERGE [dbo].[mfr__*PartnerSet] as TARGET USING @tmp as SOURCE ON TARGET.[Property] = SOURCE.[Property] AND TARGET.[PartnerType] = SOURCE.[PartnerType] AND TARGET.[PartnerId] = SOURCE.[PartnerId] AND TARGET.[EntityId] = SOURCE.[EntityId] WHEN MATCHED THEN UPDATE SET [Property] = SOURCE.[Property] ,[PartnerType] = SOURCE.[PartnerType] ,[PartnerId] = SOURCE.[PartnerId] ,[EntityId] = SOURCE.[EntityId] WHEN NOT MATCHED BY TARGET THEN INSERT ( [Property] ,[PartnerType] ,[PartnerId] ,[EntityId]) VALUES (SOURCE.[Property] ,SOURCE.[PartnerType] ,SOURCE.[PartnerId] ,SOURCE.[EntityId]); COMMIT TRANSACTION; END TRY BEGIN CATCH IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION; INSERT INTO dbo.[fds__admin_dberrors] ([UserName], [ErrorNumber], [ErrorState], [ErrorSeverity], [ErrorLine], [ErrorProcedure], [ErrorMessage], [ErrorDateTime]) VALUES (SUSER_SNAME(), ERROR_NUMBER(), ERROR_STATE(), ERROR_SEVERITY(), ERROR_LINE(), ERROR_PROCEDURE(), ERROR_MESSAGE(), GETDATE()); THROW; END CATCH; END