2013-02-18 51 views
1

如何使用MS SQL Server上的名稱中的計數器創建/聲明變量? 我有光標「對等的」循環和TSQL:用名稱中的計數器聲明變量

WHILE @@FETCH_STATUS = 0 

但是:這些值的數量是不斷變化的。所以我想寫一個自己的變量的每個值。我的目標是獲得VAR-的名字,如:@ VAR1,下一個循環@ VAR2,未來@ VAR3等 好

SET @counter = (@counter + 1) 

並不難,但我怎麼@counter的增加值(!)到@var的名字(!)?

THX a LOT!

+2

你爲什麼要這麼做?如果你想模仿數組,我建議你改用一個表變量。 – hsan 2013-02-18 14:05:43

回答

2

我認爲你應該創建一個臨時表來存儲這些變量。例如:

DECLARE @ValTable TABLE 
(
    ID int, 
    Val int, -- or any type you need 
) 

現在,插入一個新值:

SET @counter = (@counter + 1); 
INSERT INTO @ValTable VALUES (@counter, <VALUE>); 

爲了得到這個值[i]使用簡單的選擇:

SELECT Val FROM @ValTable where ID=<Number of value here>; 
+0

非常感謝您的回答。 :) 我也想到了,但我期望,使用遊標需要比使用臨時表更少的性能......或者我錯了嗎? – 2013-02-18 14:10:38

+1

@AgenTSmith所以遊標的開銷較少。遊標不支持創建變量運行時和數組。 – Paparazzi 2013-02-18 15:46:21

0

我真的不明白你正在嘗試實現,但一種方法是在你的for循環中構建查詢字符串,然後執行它,以便根據需要獲得格式化結果。