如何使用 sybase 数据库中的行数打破 while 循环?

How to break a while loop using rowcount in sybase db?

我正在尝试 运行 一个循环并为每个循环执行一个存储过程。但是,我不确定如果行数为 3,为什么循环不会中断。

我在产品中只有 3 行 table。我想在阅读 3 行后打破下面的内容。

declare @brand varchar(20)
declare @loc varchar(20)
declare @val int

SET ROWCOUNT 3
while(1=1)
BEGIN
   select TOP 1 @brand=u.brand_name, @loc= u.loc, @val = u.value
              from products;
   IF @@ROWCOUNT = 0
      BREAK
   --Exec stored proc here 
END
GO
    

要遍历 3 行,您需要使用游标。像这样:

DECLARE cursor1 CURSOR FOR 
SELECT top 3 brand_name, loc, val
FROM products

OPEN cursor1

FETCH NEXT FROM cursor1 INTO @brand, @loc, @val

WHILE @@FETCH_STATUS = 0
BEGIN
    -- do something here
  
    FETCH NEXT FROM cursor1 INTO @brand, @loc, @val

END

CLOSE cursor1
DEALLOCATE cursor1