我的存储过程中有一个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]