1
我已经创建了SQL Server 2008中的存储过程,它包含了下面的代码片段:未初始化变量中While循环
WHILE (@COUNTER <= @COUNT_ROWSTOBEPROCESSED)
BEGIN
DECLARE @INFID AS INT =0;
DECLARE @TPID AS INT =0;
SELECT @INFID = InfID FROM @TEMPTABLE WHERE @@ROWCOUNT = @COUNTER;
print @INFID ;
SET @COUNTER = @COUNTER + 1;
END
但它给了我下面的结果:
(106 row(s) affected)
0
-26
0
0
0
0
0
0
0
0 all are zeros ....
我有已经在临时表中存储了值,但未初始化为@INFID
变量。
为什么会发生?我不明白...
请帮助我,如果有人有解决方案。
----评论--- yeap,我已经看到我的代码。但是在这里我已经在我的代码中增加了计数器增量。但我仍然有同样的问题。 当我在循环内运行下面的查询。我发现@@行数始终为1
SELECT InfID,@ROWCOUNT FROM @TEMPTABLE WHERE @@ROWCOUNT = @COUNTER;
u能告诉我如何使用迭代的不是Temptable每行while循环或在SQL循环?
WHERE @@ ROWCOUNT = @ COUNTER'不正确。你想做什么? –
每次运行SELECT语句时都不会改变@@ ROWCOUNT,因此它总是会选择第一个结果? –
这是一个无限循环,因为'@COUNTER <= @ COUNT_ROWSTOBEPROCESSED'没有变化。 – danihp