Может быть лучше создать курсор над данными, скопированными в переменную таблицы, вместо самой таблицы? - PullRequest
1 голос
/ 25 мая 2011

У меня были некоторые неудачные опыты с курсорами, вызывающими тупики. Я пытался устранить курсоры, где это возможно. Когда они неизбежны, я стараюсь минимизировать объем работы, выполняемой при открытом курсоре.

Когда-нибудь лучше скопировать данные в табличную переменную и навести курсор на табличную переменную?

Я знаю, что ответ, вероятно, будет зависеть от размера набора данных. В настоящий момент меня беспокоит очень маленький набор данных (множество записей), который редко обновляется. Иногда мне все равно придется создавать сложные циклы над большими наборами данных.

Есть ли польза от копирования в табличные переменные или я слишком усложняю вещи?

1 Ответ

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

Если вы определите курсор как STATIC при объявлении, SQL Server автоматически сделает для вас временную копию данных.

С документация :

СТАТИЧЕСКИЕ

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

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