Select语句一次分配多个变量

时间:2014-06-26 12:22:53

标签: sql-server tsql

由于运行时,我想在SQL-Server存储过程中一次将单行结果集的列标记为多个变量。我想替换以下代码的最后两行:

Declare @A int
Declare @B int
Select @A = (Select Col1 From Table1 Where ID=1234)
Select @B = (Select Col2 From Table1 Where ID=1234)

因为在这个版本中程序会搜索两次ID = 1234我想做类似

的事情
Select @A, @B = (Select Col1, Col2 From Table1 Where ID=1234)

但我无法找到正确的语法。

4 个答案:

答案 0 :(得分:3)

你可以这样做

Select @A =Col1,@B=Col2  From Table1 Where ID=1234

答案 1 :(得分:2)

用逗号分隔它们并直接在SELECT中分配,而不是使用子查询:

Select @A = Col1,@B =  Col2 From Table1 Where ID=1234

请参阅select @local_variable

SELECT { @local_variable { = | += | -= | *= | /= | %= | &= | ^= | |= } expression } [ ,...n ] [ ; ]

[,...n]表示您可以根据需要重复前一部分,用逗号分隔每个重复。

答案 2 :(得分:0)

对于单独的赋值语句,您需要使用SET

DECLARE @A INT
DECLARE @B INT
SET @A = (SELECT Col1 FROM Table1 WHERE ID = 1234)
SET @B = (SELECT Col2 FROM Table1 WHERE ID = 1234)

对于单一作业声明,您可以使用

SELECT @A = Col1, @B = Col2 FROM Table1 WHERE ID = 1234

答案 3 :(得分:-1)

您将需要使用游标来迭代数据集,即使它只包含一行。见http://stevestedman.com/2013/04/t-sql-a-simple-example-using-a-cursor/