Результат изменения курсора T-SQL во время выполнения - PullRequest
2 голосов
/ 06 июля 2010

Есть ли способ предотвратить изменение курсора во время выполнения.Если у меня есть курсор, который перебирает всех пользователей, и в то же время при обработке каждого пользователя я создаю дополнительных пользователей, тогда Курсор также перебирает вновь созданных пользователей ...

Ответы [ 2 ]

9 голосов
/ 06 июля 2010

Ваш курсор должен быть НЕДОСТАТОЧНЫМ или СТАТИЧЕСКИМ

От BOL: http://msdn.microsoft.com/en-us/library/ms180169.aspx

НЕДОСТАТОЧНЫЙ

Определяет курсор, который делает временную копию данных, которые будут использоватьсякурсором.На все запросы к курсору отвечают из этой временной таблицы в tempdb;следовательно, изменения, внесенные в базовые таблицы, не отражаются в данных, возвращаемых выборками, сделанными для этого курсора, и этот курсор не допускает изменений.Когда используется синтаксис ISO, если INSENSITIVE не указан, зафиксированные удаления и обновления, сделанные для базовых таблиц (любым пользователем), отражаются в последующих выборках.

STATIC

Определяет курсор, который делаетвременная копия данных для использования курсором.На все запросы к курсору отвечают из этой временной таблицы в tempdb;поэтому изменения, внесенные в базовые таблицы, не отражаются в данных, возвращаемых выборками, сделанными для этого курсора, и этот курсор не допускает изменений.

Однако я все равно рекомендовал бы использовать решение на основе SET

0 голосов
/ 06 июля 2010

Если у вас есть метка времени для «UserCreated», вы можете отфильтровать курсор по всему, что было создано до текущего времени.

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