嗨,我创建了一个使用 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/