当我告诉光标时,它不打印文本

use*_*365 1 sql-server-2008 sql-server cursors

WAITFOR在以下脚本中与游标结合使用:

create table orders(orderId int primary key,productId int,productName varchar(20));

insert into orders values(1,11,'book');
insert into orders values(2,13,'flower');
insert into orders values(3,24,'microwave');
insert into orders values(4,7,'food');
insert into orders values(5,46,'clothes');

declare cur cursor for   
select * from orders;
open cur;
fetch next from cur;
while(@@fetch_status=0)
begin
    waitfor delay '00:00:01';
    fetch next from cur;
end;
close cur;
deallocate cur;
Run Code Online (Sandbox Code Playgroud)

我希望每 1 秒的指定间隔显示来自光标的一条记录。例如:显示第一行,然后等待一秒钟;显示第二行,然后稍等;等等。上面的光标不会这样做。说orders有 5 行。该WHILE块等待 5 秒钟,然后一起显示所有记录。

这是游标的错吗?如何修改此脚本以按预期工作?

Mar*_*ith 6

RAISERROR('', 0, 1) WITH NOWAIT在将缓冲区中的任何内容刷新到客户端(SSMS?)的延迟之前添加,否则 SQL Server 将等待更多数据来填充数据包。

Declare cur cursor for   
select * from orders   
open cur
fetch next from cur
while(@@fetch_status=0)
begin
    RAISERROR('', 0, 1) WITH NOWAIT
    WAITFOR DELAY '00:00:01'
    fetch next from cur
end
close cur
deallocate cur
Run Code Online (Sandbox Code Playgroud)