Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TSQL:声明名称中带有计数器的变量_Tsql_Variable Names - Fatal编程技术网

TSQL:声明名称中带有计数器的变量

TSQL:声明名称中带有计数器的变量,tsql,variable-names,Tsql,Variable Names,如何在MS SQL Server上使用名称中的计数器创建/声明变量? 我有一个“for like”循环,带有游标和 WHILE @@FETCH_STATUS = 0 但是:这些值的数量在不断变化。所以我想把每个值都写在自己的变量中。我的目标是获得变量名,比如:@var1,next-loop@var2,next@var3等等。 嗯 这不是很难,但是如何将@counter的值(!)添加到@var的名称(!)中呢 太多了 我认为您应该创建一个临时表来存储这些变量。例如: DECLARE @ValTa

如何在MS SQL Server上使用名称中的计数器创建/声明变量? 我有一个“for like”循环,带有游标和

WHILE @@FETCH_STATUS = 0
但是:这些值的数量在不断变化。所以我想把每个值都写在自己的变量中。我的目标是获得变量名,比如:@var1,next-loop@var2,next@var3等等。 嗯

这不是很难,但是如何将@counter的值(!)添加到@var的名称(!)中呢


太多了

我认为您应该创建一个临时表来存储这些变量。例如:

DECLARE @ValTable TABLE
(
  ID int,
  Val int, -- or any type you need
)
现在插入一个新值:

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

我真的不明白您想要实现什么,但一种方法是在for循环中按照您的意愿构建查询字符串,而不是执行它以按照您的意愿格式化结果。

为什么要这样做?如果您试图模拟数组,我建议您使用表变量。非常感谢您的回答。:)我也想过,但我希望,使用游标比使用临时表需要更少的性能。。。还是我错了?@AgenTSmith这样光标的开销就少了。游标不支持创建变量运行时或数组。
SET @counter = (@counter + 1);
INSERT INTO @ValTable VALUES (@counter, <VALUE>);
SELECT Val FROM @ValTable where ID=<Number of value here>;