T SQL变量问题

时间:2010-12-13 19:26:36

标签: sql sql-server tsql

我的一个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

如何使用变量获取多个值。

4 个答案:

答案 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