У меня есть массив JSON, как показано ниже
[
{
"CRT_FIRST_NAME": "abc",
"CRT_EMAIL": "abc@gmail.com",
"CRT_ID": 60
},
{
"CRT_FIRST_NAME": "pqr",
"CRT_EMAIL": "pqr@gmail.com",
"CRT_ID": 61
},
{
"CRT_FIRST_NAME": "sample",
"CRT_EMAIL": "sample@gmail.com",
"CRT_ID": 62
}
]
Я передаю его и выполняю хранимую процедуру save_employee_data
, как показано ниже
exec save_employee_data '[{"CRT_FIRST_NAME": "abc","CRT_EMAIL": "abc@gmail.com","CRT_ID": 60},{"CRT_FIRST_NAME": "pqr","CRT_EMAIL": "pqr@gmail.com","CRT_ID": 61},{"CRT_FIRST_NAME": "sample","CRT_EMAIL": "sample@gmail.com","CRT_ID": 62}]'
И моя хранимая процедура выглядит как ниже
CREATE PROCEDURE [dfed].[save_employee_data]
@jsondata nvarchar(max)
AS
DECLARE
@CRTID_FETCH INT,
@CRT_FIRST_NAME_FETCH VARCHAR(250),
@CRT_EMAIL_FETCH VARCHAR(250)
BEGIN
SELECT @CRT_FIRST_NAME_FETCH=CRT_FIRST_NAME, @CRT_EMAIL_FETCH=CRT_EMAIL, @CRTID_FETCH=CRT_ID FROM
OPENJSON ( @jsondata )
WITH (
CRT_FIRST_NAME varchar(200) '$.CRT_FIRST_NAME' ,
CRT_EMAIL varchar(200) '$.CRT_EMAIL',
CRT_ID varchar(200) '$.CRT_ID'
)
UPDATE employees SET email_staff = @CRT_EMAIL_FETCH WHERE CRT_ID = @CRTID_FETCH
END
Здесь запрос на обновление не работает. Я пытаюсь l oop my JSON data и извлекаю значения CRT_EMAIL
, CRT_FIRST_NAME
, CRT_ID
из данных json, и на основе этих значений я пытаюсь обновить столбец email_staff
с помощью CRT_EMAIL
значение для соответствующего столбца, т.е. первичный ключ CRT_ID
Но запрос на обновление не работает. Это правильный способ зацикливания JSON данных?