使用OPENJSON

时间:2017-09-11 17:40:58

标签: sql-server json

您好我创建了一个使用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子句或更改跟踪上下文子句,则必须以分号结束前一个语句。

1 个答案:

答案 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文档。