Курсоры в базе данных SQL Server 2005 - PullRequest
1 голос
/ 22 сентября 2010

Я работаю с курсорами и успешно выполняюсь в T-SQL, а база данных, которую я использую, - Microsoft SQL Server 2005.

Мой запрос - после выполнения курсора вывод выводится в области сообщений.Когда я освобождаю курсор, используя deallocate <cursor name>, он освобождается.Я снова выполняю свой курсор.Теперь в области сообщений я получаю это:

"Команда (и) успешно выполнена"

, и я не получаю вывод курсора.Чтобы решить, я скопировал код курсора, открыл новую область запроса и вставил туда.Он отлично работает в первый раз.Когда я повторно запускаю курсор, то же сообщение отображается в области сообщений.

Как повторно выполнить тот же код курсора в том же окне, а не создавать новое окно SQL?

Ответы [ 2 ]

1 голос
/ 22 сентября 2010

Вы меняете состояние при исполнении. Что это значит, я не могу сказать без фактического просмотра вашего кода. Но ваша база данных и сеанс находятся в одном состоянии, когда вы выполняете код в первый раз, и в другом состоянии, когда вы выполняете его снова. Это может быть что-то простое, как несбалансированные транзакции. Во второй раз в новом состоянии курсор ничего не выбирает, или ваш код принимает совершенно другую ветку IF и не выполняет курсор. Без кода невозможно точно сказать, в чем разница в состоянии базы данных / сеанса.

1 голос
/ 22 сентября 2010

Не видя вашего кода, трудно сказать, что не так, но я точно знаю, что курсоры являются последним средством и обычно могут быть выполнены с меньшим количеством кода и более быстрой производительностью, используя другой метод.Посмотрите эту ссылку для идей лучших способов справиться с вашей задачей:

http://wiki.lessthandot.com/index.php/Cursors_and_How_to_Avoid_Them

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