我有n个@BLOCn变量.
是否可以连接变量名,以便可以使用循环计数器作为其中的一部分?例如:
DECLARE @BLOC1 int, @i int, @MAX int, @QTY int;
SET @i = 1;
SET @MAX = 1;
SET @BLOC1 = 12;
WHILE @i <= @MAX
BEGIN
SET @QTY = FLOOR('BLOC'+@i)
...
END
SELECT @QTY
到目前为止,我收到了这个错误:
Conversion failed when converting the varchar value ‘BLOC’ to data
type int.
我基本上是在寻找Javascript的SQL等价物:
var foo = 'var';
var bar = 'Name';
window[foo + bar] = 'hello';
alert(varName);
最佳答案 你将无法按照自己的方式去做. SQL Server有一个exec()函数和一个可以运行动态SQL的sp_executesql存储过程.但是,它们都会为运行命令创建另一个上下文.
如果您愿意使用表变量来保存@BLOC值,您可以执行以下操作:
DECLARE @BLOCS table(k int, v int);
DECLARE @i int, @MAX int, @QTY int;
SET @i = 1;
SET @MAX = 1;
insert into @BLOCS values(1, 12)
WHILE @i <= @MAX
BEGIN
SET @QTY = FLOOR((select v from @BLOCS where k = @i))
set @i = @i + 1
END
SELECT @QTY