Management Studio不显示光标的结果

时间:2011-05-27 22:11:48

标签: tsql cursor ssms

好的,这可能很简单,但我找不到解决方案。 我开始使用T-SQL中的游标,并且正在玩它们。

但是如果我通过Execute-Button在Management Studio中执行它们,我就不会得到我的结果。我得到的只是“命令执行成功”。

如果我调试它我会得到结果,下次我点击执行时我也会得到结果......

有某种缓存吗?或者我做错了吗?

脚本看起来像这样:

    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:自然我在打印前使用了select,同样的问题。

3 个答案:

答案 0 :(得分:2)

啊,我明白你的意思了。在第一次运行下面的脚本时,它会产生结果。在随后的情况下没有任何反应(除非您尝试在新的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_STATUS值。这是从新连接中的0开始,但您的脚本会将其保留在-1

你需要Fetch循环前的第一行。有关正常模式,请参阅this blog post

答案 1 :(得分:1)

如果可以,请尝试切换标签:
SSMS Tab example

听起来好像你在消息标签上

修改
另外,在看了更多之后,您是在选择光标数据还是整个脚本?我问,因为看起来你只是设置变量而不是用它们做任何事情(当然除print之外)。

答案 2 :(得分:0)

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