Tsql Management Studio不显示来自游标的结果

Tsql Management Studio不显示来自游标的结果,tsql,cursor,ssms,Tsql,Cursor,Ssms,好的,这可能是一个简单的问题,但我找不到解决办法。 我开始使用T-SQL中的游标,并且正在使用它们 但是,如果我在ManagementStudio中通过“执行”按钮执行结果,则不会返回结果。我得到的只是命令成功执行 如果我调试它,我会得到结果,下次单击execute时,我也会得到结果 有什么缓存吗?还是我做错了 脚本如下所示: declare @po varchar(20), @prod varchar(50), @qty integer, @type varchar(20)

好的,这可能是一个简单的问题,但我找不到解决办法。 我开始使用T-SQL中的游标,并且正在使用它们

但是,如果我在ManagementStudio中通过“执行”按钮执行结果,则不会返回结果。我得到的只是命令成功执行

如果我调试它,我会得到结果,下次单击execute时,我也会得到结果

有什么缓存吗?还是我做错了

脚本如下所示:

    declare @po varchar(20), @prod varchar(50), @qty integer, @type varchar(20)

    declare db_cursor cursor for
    select product, po, qty, space(1) as btype from header
    for read only

    open db_cursor

    while @@FETCH_STATUS=0
    begin
      fetch db_cursor into @po, @prod, @qty, @type
      if @qty<1000
    set @type = 'small'
    else 
    set @type = 'large'
       print @type
    end

close db_cursor
deallocate db_cursor

PS:当然,我使用了打印前选择,同样的问题。

如果可以,请尝试切换选项卡:

听起来你好像在“消息”选项卡上

编辑
另外,在仔细查看之后,您是在选择光标数据,还是选择了整个脚本?我这样问是因为看起来你只是在设置变量,除了打印之外什么都不做。

使用查看结果作为文本选项。

啊,我明白你的意思了。在第一次运行下面的脚本时,它会产生结果。在随后的情况下,除非您在新的SSMS窗口中尝试,否则不会发生任何事情

    declare @po varchar(20), @prod varchar(50), @qty integer, @type varchar(20)

    declare db_cursor cursor for
    select name, name, number, space(1) as btype from master..spt_values
    for read only

    open db_cursor

    while @@FETCH_STATUS=0
    begin
    print 'y'
      fetch db_cursor into @po, @prod, @qty, @type
      if @qty<1000
    set @type = 'small'
    else 
    set @type = 'large'
       print @type
    end

close db_cursor
deallocate db_cursor
问题是如何检查@@FETCH\u状态值。在新连接中,该值从0开始,但脚本将其保留为-1


您需要在循环之前获取第一行。有关正常模式,请参阅。

看起来您无需光标即可完成此操作。你为什么要用它?真的吗?那会是什么样子?