2010-12-13 118 views
1

我的一個SP中有一個變量。我在我的SP中有類似的東西:T_SQL變量問題

Declare @Statusid int 

SELECT @Statusid = ID 
FROM table1 a, table2 b 
WHERE a.col1 = b.col1 

但是,即使SQL有多個值,SQL也只返回一個值。

當我執行下面的SQL語句,我得到了多個值ID

SELECT ID 
FROM table1 a, table2 b 
WHERE a.col1 = b.col1 

我如何可以使用可變獲得多個值。

回答

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 
5

你不行。變量存儲一個值,除非它的變量表

DECLARE @Status TABLE (Status int) 

INSERT @Status 
SELECT ID 
FROM table1 a JOIN table2 b ON a.col1 = b.col1 

,並使用適當的加入請按在1992年

+0

大聲笑男孩,我們在同一頁上。感謝您解決我的錯字BTW。 – HLGEM 2010-12-13 19:35:30

1

頒佈的ANSI-92標準你不能 - 變量只能包含一個值除非是表變量。 你在做什麼變量?爲什麼不加入表格?

(另外,請千萬不要用那意味着再次加入語法,這是一個非常貧窮的編程習慣導致的錯誤,更難以維持。)

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 

對於這個問題

我如何可以使用可變獲得多個值。

你對變量的計劃是什麼?