2013-02-18 54 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循环中构建查询字符串,然后执行它,以便根据需要获得格式化结果。