sql - 将变量动态传递给 sp_executesql
问题描述
我有一个要求,其中一组变量已经初始化为一些默认值并用于其他目的。现在我试图动态传递一些变量,通常会从另一个表中查询变量并传递给一个 select 语句。
我现在不想使用所有变量。参数的数量可能会不时变化。
当我尝试以以下方式实现时,我得到的变量未定义。
下面是类似于逻辑的示例代码片段。
DECLARE @i_int1 INTEGER = 1
,@i_int2 INTEGER = 2
,@i_int3 INTEGER = 3
,@i_int4 INTEGER = 4
,@i_int5 INTEGER = 5
,@i_int6 INTEGER = 6
,@sql NVARCHAR(max) = ''
,@vcOutput NVARCHAR(max) = ''
BEGIN
--set @vcOutput = CAST(@i_int1 AS nvarchar(MAX)) +','+ CAST(@i_int2 AS nvarchar(MAX))
SET @vcOutput = '@i_int1,@i_int2'
SET @sql = 'select ' + @vcOutput
EXECUTE sp_executesql @sql;
END
解决方案
您可以尝试以下查询。
DECLARE @i_int1 INTEGER = 1
,@i_int2 INTEGER = 2
,@i_int3 INTEGER = 3
,@i_int4 INTEGER = 4
,@i_int5 INTEGER = 5
,@i_int6 INTEGER = 6
,@sql NVARCHAR(max) = ''
,@vcOutput NVARCHAR(max) = ''
BEGIN
--set @vcOutput = CAST(@i_int1 AS nvarchar(MAX)) +','+ CAST(@i_int2 AS nvarchar(MAX))
SET @vcOutput = Convert(Varchar(10), @i_int1) + ',' + Convert(Varchar(10), @i_int2)
SET @sql = 'select ' + @vcOutput
--select @sql
exec(@sql);
END
推荐阅读
- javascript - 如何动态编写 React.useState 函数,以便您可以从 cms 获得尽可能多的输入类型
- sql - 从变量中传递的数据库中选择并分离列名
- linux - 无法从 docker 容器中找到 .sh 脚本
- c# - Calling function from another script attatched to another object not working
- java - Coinbase Pro 和 Sandbox 登录端点
- mysql - 从数据库(php、mysql、laravel)编码 blob 后图像不加载
- php - 将布尔值从 Ajax 传递到 PHP
- python - 如何提取可变的json键的值
- tensorflow - 从张量流估计器将多个损失分量输出到张量板
- java - Apache Nifi - 无法启动 Ni-Fi 实例