SQL插入JSON数据时报错Must declare the scalar variable "@jsontest"原因求解
错误含义
这是SQL Server的标准执行错误,意思是当前执行会话中不存在名为@jsontest的已声明标量变量,SQL解析器无法识别你引用的变量,因此终止语句执行。
触发错误的常见原因
- 变量声明语句和后续INSERT语句没有在同一个执行批次内运行。很多数据库管理工具默认仅执行你选中的代码片段,如果你只选中了INSERT部分运行,前面的
DECLARE @jsontest声明没有被执行,就会触发该报错。 - 两段代码中间存在批次分隔符
GO。GO是SQL Server客户端识别的批次分割标记,会把前后代码拆为两个独立执行批次,而变量的作用域仅限声明它的当前批次,GO之后的代码无法访问前面声明的变量。 - 小概率情况是变量名拼写错误,从你提供的代码来看变量名前后一致,可以排除这个问题。
补充说明
你现有代码的业务逻辑是正确的,用AS JSON关键字指定嵌套存储JSON对象的写法,完全符合SQL Server的OPENJSON语法规范,只要确保完整执行所有代码即可正常插入数据。
内容的提问来源于stack exchange,提问作者Divya Singh
相关产品推荐
相关产品推荐

