我的一个SP中有一个变量。我的SP中有这样的东西:
Declare @Statusid int
SELECT @Statusid = ID
FROM table1 a, table2 b
WHERE a.col1 = b.col1
但SQL只返回一个值,即使它有多个值。
当我执行以下SQL Stmt时,我得到ID的多个值
SELECT ID
FROM table1 a, table2 b
WHERE a.col1 = b.col1
如何使用变量获取多个值。
答案 0 :(得分:5)
你做不到。变量存储一个值,除非它是表变量
DECLARE @Status TABLE (Status int)
INSERT @Status
SELECT ID
FROM table1 a JOIN table2 b ON a.col1 = b.col1
请按照 1992
中公布的ANSI-92标准使用正确的JOIN答案 1 :(得分:1)
您不能 - 变量只能包含一个值,除非是表变量。 你在做什么变量?为什么不加入表格?
(另外,请不要再次使用隐含的连接语法,这是一种非常糟糕的编程习惯,会导致错误并且更难以维护。)
答案 2 :(得分:1)
变量@Statusid可能只有一个值。它可能存储最后一个最后一个值。要更好地了解这一点,请尝试以下
DECLARE @Statuses varchar(max)
SELECT @Statuses = @Statuses + cast(ID as varchar) + ", "
FROM table1 a
INNER JOIN table2 b
ON a.col1 = b.col1
Print @Statuses
至于这个问题
如何使用变量获取多个值。
你有什么计划变量?
答案 3 :(得分:0)
您只能为变量分配一个值,为什么不使用临时表?
CREATE TABLE #TEMPTABLE (
StatusID INT )
INSERT INTO #TEMPTABLE(StatusID) SELECT ID FROM table1 a, table2 b WHERE a.col1 = b.col1
-- USE THE TABLE AND THEN REMEMBER TO DELETE IT
DROP TABLE #TEMPTABLE