Можно ли обновить таблицу напрямую, используя JSON, без вставки во временную таблицу?
Ниже код вставляет данные во временную таблицу и обновляет исходную таблицу.
DECLARE @TempTelecommunicationsNumber AS TABLE (RoleID INT,Number VARCHAR(100),Ext VARCHAR(100))
INSERT INTO @TempTelecommunicationsNumber (RoleID,Number,Ext)
SELECT @RoleID, Number,Ext
FROM OPENJSON(@TelecommunicationsNumber)
WITH (RoleID INT, Number NVARCHAR(256), Ext NVARCHAR(256))
MERGE Party.TelecommunicationsNumber original
USING @TempTelecommunicationsNumber modified
ON (original.RoleID = modified.RoleID)
WHEN MATCHED
THEN UPDATE SET
original.Number = modified.Number,
original.Ext = modified.Ext
WHEN NOT MATCHED BY TARGET
THEN INSERT (RoleID,Number,Ext)
VALUES (@RoleID,modified.Number,modified.Ext);
Есть ли способ обновить напрямую, как показано ниже.
MERGE Party.TelecommunicationsNumber original
USING OPENJSON(@Json) modified
ON (original.RoleID = modified.RoleID)
WHEN MATCHED
THEN UPDATE SET
original.Number = modified.Number,
original.Ext = modified.Ext
WHEN NOT MATCHED BY TARGET
THEN INSERT (RoleID,Number,Ext)
VALUES (@RoleID,modified.Number,modified.Ext);