You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server中如何在DQE执行FOR JSON PATH并插入结果到临时表?

解决DQE环境中执行FOR JSON PATH并插入临时表的问题

嘿,我来帮你搞定这个问题!你遇到的报错是因为SQL Server不允许直接通过INSERT EXEC执行包含FOR JSON PATH的语句并插入结果。不过有两种可靠的方法可以解决:

方法1:将JSON结果存入变量后插入临时表

这种方法通过sp_executesql带输出参数来获取JSON结果,还能避免SQL注入风险:

DECLARE @QUERY NVARCHAR(MAX) = 'SELECT @JSONOutput = (SELECT * FROM Student FOR JSON PATH)'
DECLARE @JSONOutput NVARCHAR(MAX)
DECLARE @TABLE TABLE(RESULT NVARCHAR(MAX))

-- 执行动态SQL并获取JSON结果
EXEC sp_executesql 
    @QUERY,
    N'@JSONOutput NVARCHAR(MAX) OUTPUT',
    @JSONOutput OUTPUT

-- 将结果插入临时表
INSERT INTO @TABLE(RESULT) VALUES(@JSONOutput)

方法2:修改动态SQL,将JSON包装为列返回

把FOR JSON PATH的结果作为子查询包装成一个普通列,这样INSERT EXEC就能正常处理了:

DECLARE @QUERY NVARCHAR(MAX) = 'SELECT (SELECT * FROM Student FOR JSON PATH) AS RESULT'
DECLARE @TABLE TABLE(RESULT NVARCHAR(MAX))

INSERT @TABLE EXEC (@QUERY)

两种方法都能成功把FOR JSON PATH生成的JSON字符串插入到临时表的RESULT列中,你可以根据自己的场景选择更合适的一种。

内容的提问来源于stack exchange,提问作者samira mahdavi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:15:22