Management Studio не показывает результаты от курсора - PullRequest
1 голос
/ 28 мая 2011

Хорошо, это может быть легко, но я не могу найти решение.Я начинаю работать с курсорами в T-SQL и играю с ними.

Однако я не получаю свои результаты обратно, если я выполню их в Management Studio с помощью кнопки 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: естественно, я использовал select перед печатью, тот же вопрос.

Ответы [ 3 ]

2 голосов
/ 28 мая 2011

Ах, я понимаю, что вы имеете в виду. В первом случае запускается скрипт, приведенный ниже, который дает результаты. В последующих случаях ничего не происходит (если вы не попробуете в новом окне 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 первый ряд перед циклом. См. этот пост в блоге для нормального паттерна.

1 голос
/ 28 мая 2011

Попробуйте переключить вкладки, если можете:
SSMS Tab example

Звучит так, как будто вы находитесь на вкладке Сообщения

Редактировать
Также, посмотрев больше, вы выбираете данные курсора после этого или это весь ваш сценарий?Я спрашиваю, потому что похоже, что вы просто устанавливаете переменные и ничего не делаете с ними (кроме, конечно, print).

0 голосов
/ 28 мая 2011

Использовать Просмотр результатов как текстовую опцию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...