如何跳过SQL Server中的合并输出?

时间:2018-02-20 17:24:12

标签: sql-server merge

我的存储过程中有一个merge子句有问题。 在这个过程中,我很少基于JSON进行合并,并且对于每个合并操作(我的意思是插入/更新/删除),总是生成输出。 这是不期望的,因为在程序结束时我想根据某些条件返回一条消息。

最后,永远不会返回消息,因为正在返回合并输出。

如何跳过合并中的输出数据?

ALTER PROCEDURE [dbo].[MyProcedure] 
@PostData nvarchar(max)
AS
    BEGIN TRY
        BEGIN TRANSACTION;


                    SELECT
                        JSON_Value (c.value, '$.ID') as ID,
                        JSON_Value (c.value, '$.Name') as ID,
                        JSON_Value (c.value, '$.IsDeleted') as ID,


                        INTO #tempTable FROM OPENJSON (@PostData, '$.MyArray') as c

                        MERGE [dbo].[Table1] AS dst
                        USING (SELECT * from #tempTable) AS src
                        ON dst.ID = src.ID
                        WHEN MATCHED AND #tempTable.IsDeleted = 1 THEN DELETE

                        WHEN MATCHED THEN UPDATE SET Name = #tempTable.Name         

                        WHEN NOT MATCHED AND #tempTable.ID = -1 THEN
                        INSERT(Imie,IsDeleted)
                        VALUES(#tempTable.Name,IsDeleted);



        COMMIT TRANSACTION
    END TRY
    BEGIN CATCH

        IF @@TRANCOUNT > 0
        ROLLBACK TRANSACTION;


    END CATCH;

                IF @@TRANCOUNT > 0
                COMMIT TRANSACTION;

                SELECT 'Success' as [Message]

0 个答案:

没有答案