我正在尝试将多个变量设置为SQL Query的结果,该SQL Query返回包含多个列的单个行。 SQL语句的格式为:
SELECT top 1
a,
b,
c = x + y,
d
FROM tablename
WHERE aSwitch = 1
所以我希望使用'执行SQL查询'任务,它将使用查询结果设置4个包变量。
例如,如果查询结果为:
| a | b | c | d |
-------------------------------------
| duck | cow | rabbit | 42 |
然后执行后的变量状态为:
var1 = duck
var2 = cow
var3 = rabbit
var4 = 42
有什么想法吗?
(使用VS / SQL 2005)
答案 0 :(得分:14)
在SQL任务中,在常规菜单下,将 ResultSet 属性设置为 SingleRow 。
然后,在 ResultSet 菜单中,按照select子句的顺序添加变量,并使用变量映射别名。例如:
SELECT 1 AS One, 2 AS Two
答案 1 :(得分:0)
我通过将结果集映射为从零开始的序数集找到了解决方案。例如。在任务属性中的“结果集”下:
result name | variable name
-------------------------------
0 | a
1 | b
3 | c
4 | d
此方法允许我保持我的SQL语句不变。
答案 2 :(得分:-1)
创建一个包含四个输出参数的存储过程:
CREATE SP_data(
@x INT,
@a int OUTPUT,
@b int OUTPUT,
@c int OUTPUT
@d int output
)
AS
SELECT top 1
@a = a,
@b= b,
@c = x + y,
@d= @d
FROM tablename
WHERE Switch = @x
在参数映射选项卡的Execute SQL Query中创建四个输出参数
执行proc
EXEXCUT SP_data 1,? OUTPUT,? OUTPUT,? OUTPUT, ? OUTPUT