Это моя первая попытка openjson
, и я пытаюсь настроить хранимую процедуру, которая передает несколько записей и либо вставляет, либо обновляет запись в таблицу. Я могу настроить базовый запрос на вставку или обновление, используя мой openjson
, однако моя проблема в том, что я не знаю, как определить, нужно ли вставлять или обновлять текущую запись на основе значений json.
Вот простой простой пример. Я передаю данные json с двумя заказами, которые я хочу вставить/обновить в таблицу dbo.Orders
.
1-й заказ, который я передаю, имеет OrderId = 123
, поэтому, поскольку я знаю, что запись уже существует, мне нужно ее обновить. Однако 2-й заказ имеет OrderId = 0
. Так что этого нет в базе данных и его нужно вставить.
Как бы я это сделал?
DECLARE @json NVARCHAR(2048) = N'[
{
"Order": {
"OrderId":123,
"Number":"SO43659",
"Date":"2011-05-31T00:00:00"
},
"AccountNumber":"AW29825",
"Item": {
"Price":2024.9940,
"Quantity":1
}
},
{
"Order": {
"Number":"SO43661",
"Date":"2011-06-01T00:00:00"
},
"AccountNumber":"AW73565",
"Item": {
"Price":2024.9940,
"Quantity":3
}
}
]'
SELECT * FROM OpenJson(@json);
--Here's where I need to do an insert/update. Not sure how, but here's the gist:
--If Json's Order.OrderId > 0
--BEGIN
-- UPDATE dbo.Orders WHERE OrderId = <Json's Order.OrderId>
--END
--ELSE
--BEGIN
-- INSERT INTO dbo.Orders (all values)
--END
Спасибо за любую помощь