TSQL中如何将变量内查询语句的结果赋值给变量?
解决动态SQL结果存入变量的问题
要将动态SQL的执行结果存入变量,而非直接输出结果集,你可以使用sp_executesql存储过程结合输出参数实现,无需修改从table1获取的原查询语句。
具体实现步骤
- 声明存储动态SQL的变量和接收结果的变量
- 从
table1获取目标查询语句 - 通过
sp_executesql执行动态SQL,并将结果绑定到输出变量
完整代码示例
-- 声明变量 DECLARE @sqlquery NVARCHAR(MAX), @countresult INT; -- 从table1获取查询语句(替换为实际的查询条件) SELECT @sqlquery = query_column FROM table1 WHERE id = 1; -- 假设query_column存储了"SELECT COUNT(*) FROM table2" -- 使用sp_executesql执行动态SQL并将结果存入变量 EXECUTE sp_executesql @statement = @sqlquery, @params = N'@output INT OUTPUT', -- 定义输出参数的类型 @output = @countresult OUTPUT; -- 将结果绑定到@countresult -- 验证变量值 SELECT @countresult AS 统计结果;
原理说明
- 直接执行
EXEC(@sqlquery)会直接返回查询的结果集,无法将结果存入变量 sp_executesql支持定义输出参数,即使原查询是SELECT COUNT(*) FROM table2这类无参数语句,也能通过输出参数接收查询返回的单个值,完全不需要修改原查询语句
内容的提问来源于stack exchange,提问作者jvr
相关产品推荐
相关产品推荐

