sql-server - 使用 OPENJSON 时存储过程中关键字 'with' 附近的语法不正确

标签 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 子句或更改跟踪上下文子句,则前一条语句必须以分号终止。

最佳答案

检查您的数据库兼容性级别。 OPENJSON 是 SQL Server 2016 的新增功能,如果您的兼容级别设置为“SQL Server 2014 (120)”或更低,则 OPENJSON 函数将无法正确识别或执行。请参阅位于 https://docs.microsoft.com/en-us/sql/t-sql/functions/openjson-transact-sql 的 MSDN 文档.

关于sql-server - 使用 OPENJSON 时存储过程中关键字 'with' 附近的语法不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46161489/

相关文章:

python - 在 ijson 中解析 json 文件时出现内存问题

javascript - Amcharts 无法正确解析 mysql 中的日期时间

python - SQLAlchemy JSON TypeDecorator 未正确保存,session.commit() 有问题

c# - resx 中的 json 文件是二进制文件而不是文本文件

sql - MSSQL : Disable triggers for one INSERT

sql-server - 使用批量插入将文本文件导入 SQL Server

c# - .NET 对象持久性选项

sql - 查找时间戳和标识不按顺序排列的行的有效方法是什么?

sql-server - 将SQL CASE WHEN语句加组语句转换为LINQ

javascript - JSON 中第 40 位的意外标记 t