Моя проблема заключается в следующем: я использую SQL Server 2017 Express, у меня есть переменная типа json
, ранее отформатированная, она работает нормально в обычном запросе.
Но когда я создаю хранимой процедуры, я получаю сообщение об ошибке и действительно не знаю, как ее решить. Я был бы признателен, если бы мне кто-нибудь помог мне в этой проблеме.
Это код в обычном запросе
DECLARE @json NVARCHAR(MAX)
SET @json =
'
{
"varios":[{
"name":"David",
"cant":"291123",
"number":"205893"
},
{
"name":"pedro",
"cant":"295523",
"number":"206693"
},
{
"name":"maria",
"cant":"295523",
"number":"206693"
}
]
}
'
SELECT *
FROM OPENJSON (@json, '$.varios' )
WITH (
name varchar(200) '$.name' ,
cant int '$.cant',
number int '$.number'
) ;
Это возвращает следующий результат:
Name cant number
------------------------------
David 291123 205893
pedro 295523 206693
maria 295523 206693
Но когда я пытаюсь сделать то же самое в такой хранимой процедуре:
CREATE PROCEDURE sp_pro
@json NVARCHAR(max)
AS
BEGIN
SET @json =
'
{
"varios":[{
"name":"David",
"cant":"291123",
"number":"205893"
},
{
"name":"pedro",
"cant":"295523",
"number":"206693"
},
{
"name":"maria",
"cant":"295523",
"number":"206693"
}
]
}
'
SELECT *
FROM OPENJSON(@json, '$.varios' )
WITH (
nombre varchar(50) '$.name',
cantidad int '$.cant',
numero int '$.number'
);
END
, я получаю следующую ошибку, которую не смог решить:
Msg 102, Уровень 15, состояние 1, процедура sp_prueba2, строка 29 [Batch Start Line 0]
Sintaxis invalida cerca de '$ .name'.
Я признателен, если кто-то знает, как это можно решить, или какой шаг я пропустил