您好我创建了一个使用OPEN JSON并将数据插入表中的存储过程。
问题是当我运行存储过程时它显示错误。
我正在使用SQL Server 2016(SQl Server 13.0.4446.0)。使用sql server 13.0.1742.0
时,我没有遇到同样的问题CREATE PROCEDURE [dbo].Test2--'[{"FileId":1,"DataRow":"3000926900"}]'
(
@data varchar(max)
)
AS
BEGIN
create table #Temp
(
FileId bigint,
DataRow nvarchar(max),
DateLoaded DateTime
)
INSERT INTO [dbo].#Temp
SELECT * FROM OPENJSON(@data)
WITH (FileId bigint,
DataRow nvarchar(max),
DateLoaded DateTime)
select * from #temp
END
错误: 如果此语句是公用表表达式,xmlnamespaces子句或更改跟踪上下文子句,则必须以分号结束前一个语句。
答案 0 :(得分:8)
检查数据库兼容级别。 OPENJSON是SQL Server 2016的新增功能,如果您的兼容级别设置为“SQL Server 2014(120)”或更低,则无法正确识别或执行OPENJSON功能。请参阅https://docs.microsoft.com/en-us/sql/t-sql/functions/openjson-transact-sql上的MSDN文档。