由于运行时,我想在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)
但我无法找到正确的语法。
答案 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 { = | += | -= | *= | /= | %= | &= | ^= | |= } 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/