如何使用 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
我正在尝试 运行 一个循环并为每个循环执行一个存储过程。但是,我不确定如果行数为 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