Начальная позиция для повторно используемого T-SQL курсора? - PullRequest
3 голосов
/ 26 мая 2010

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

В моей процедуре мне нужно дважды пройтись по строкам таблицы.

После объявления курсора, уже пройденного через временную таблицу и закрытия курсора, позиция курсора останется в конце таблицы при повторном открытии или переместится в исходную начальную позицию (то есть: до первого ряда)?

В качестве альтернативы, чтобы переместить курсор, я должен сделать 'FETCH FIRST', прежде чем снова пройти через него?

Правильно ли я предположить, что «затраты» на это изменение положения и повторное использование курсора будут меньше, чем освобождение и перераспределение курсора?

1 Ответ

1 голос
/ 26 мая 2010

Расходы на размещение и перераспределение тривиальны. «Плохость» курсора проистекает из того факта, что вы не взаимодействуете с БД оптимальным образом, а не из-за каких-либо особых затрат на создание или удаление курсора.

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

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

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