试图建立一个存储过程以将 json 作为行插入到现有的空表中。json 属性与表列匹配。
此存储过程返回 3 个错误,如下所示
declare @json nvarchar(max)
declare @db_name sysname = 'test1'
set @json= N'{
"Cutouts":
[
{
"ItemCode":"Circle",
"MinutesLabor":8
},
{
"ItemCode":"Star",
"MinutesLabor":10
}
]
}';
--print @json
declare @str nvarchar(max)
set @str = N'INSERT [' + QUOTENAME (@db_name) + '].[dbo].[Cutouts] (ItemCode, MinutesLabor)
SELECT ItemCode, MinutesLabor
FROM OPENJSON(' + @json + ')
WITH (
ItemCode varchar(8) ''$.Cutouts.ItemCode'',
MinutesLabor decimal(9,1) ''$.Cutouts.MinutesLabor''';
--print @str
exec (@str)
错误是
消息 102,级别 15,状态 1,第 4 行
'Cutouts' 附近的语法不正确。
我尝试遵循在SQLShack的 sql server 中使用 json 的示例中使用的 json 格式。我已经在JSONLint验证了 json
以 ' { "ItemCode":"Circle", "MinutesLabor":8 ' 开头的标识符太长。最大长度为 128。
我尝试使用 and 启动 sp,SET QUOTED_IDENTIFIER ON
并且SET QUOTED_IDENTIFIER OFF
在每种情况下都会引发相同的错误
第三个错误是
关键字“with”附近的语法不正确。如果此语句是公用表表达式、xmlnamespaces 子句或更改跟踪上下文子句,则前面的语句必须以分号结束。
前面的语句确实以分号结尾
有很多示例展示了如何将 json 插入 SQL Server,我已尽力遵循,但场景似乎都比我的复杂,但我仍然无法正确处理。