-- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE PROCEDURE [dbo].[mfr__updt__comments] @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__comments]; DECLARE @tmp_cmd nvarchar(1000) = N'SELECT DISTINCT * FROM ' + @tblname INSERT INTO @tmp EXECUTE [sp_executesql] @tmp_cmd; BEGIN TRANSACTION; MERGE [dbo].[mfr__comments] as TARGET USING @tmp as SOURCE ON TARGET.[Id] = SOURCE.[Id] WHEN MATCHED AND (TARGET.[Version] <= SOURCE.[Version] OR TARGET.[DateOfCreation] <= SOURCE.[DateOfCreation]) THEN UPDATE SET [Id] = SOURCE.[Id] ,[Version] = SOURCE.[Version] ,[DateOfCreation] = SOURCE.[DateOfCreation] ,[IsInternal] = SOURCE.[IsInternal] ,[ServiceRequestId] = SOURCE.[ServiceRequestId] ,[CompanyId] = SOURCE.[CompanyId] ,[Content] = SOURCE.[Content] WHEN NOT MATCHED BY TARGET THEN INSERT ([Id] ,[Version] ,[DateOfCreation] ,[IsInternal] ,[ServiceRequestId] ,[CompanyId] ,[Content]) VALUES (SOURCE.[Id] ,SOURCE.[Version] ,SOURCE.[DateOfCreation] ,SOURCE.[IsInternal] ,SOURCE.[ServiceRequestId] ,SOURCE.[CompanyId] ,SOURCE.[Content]); 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