SQL中的变量而Loop不会增加,我正在使用SAP Business One

时间:2017-10-25 13:41:29

标签: sql sql-server while-loop sap

DECLARE @Counter int
SET @Counter = 4
WHILE @Counter <= 10
BEGIN
select @counter
SET @Counter = @counter + 1
END

这是我的代码,结果我得到了4。如果我将我的set @ counter = 4更改为set @ counter = 5,我最后只得到5。我正在使用SAP业务一个查询生成器。这怎么不行?如果我在select @counter之后放END我实际得到11 ....所以循环实际上运行

2 个答案:

答案 0 :(得分:0)

您的代码似乎对我来说......问题可能在于您编写变量名称的方式。当它是一个变量时,尝试使用相同的大小写:@counter和@Counter。

还尝试使用select而不是set。它们几乎完全相同,但在你的情况下可能会更好。

SELECT @Counter = @Counter + 1

阅读评论后编辑: 如果循环外的选择显示11,请尝试在循环内打印,而不是仅选择是否显示4。

DECLARE @counter int
SET @counter = 4
WHILE @counter<= 10
BEGIN
    PRINT @counter
    SELECT @counter = @counter + 1
END

答案 1 :(得分:0)

SAP Business One查询管理器只显示第一个select语句的结果。在您的情况下,您可以将所有数据存储在临时表中,并在离开循环时选择该表。

declare @temp table (mynum int)
DECLARE @Counter int
SET @Counter = 4
WHILE @Counter <= 10
BEGIN
   insert into @temp select @counter
   SET @Counter = @counter + 1
END

select * from @temp