Каков наилучший способ вызова хранимой процедуры для каждой строки? - PullRequest
2 голосов
/ 01 июня 2011

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

Я написал хранимую процедуру в SQL, которая получает ID из TableA и копирует все таблицы из B-G. Теперь я хочу, чтобы каждый ряд TalbeA вызывал этот сохраненный процесс. Я могу использовать CURSOR или WHILE для этого, но я прочитал, что CURSOR не рекомендуется и что WHILE медленнее, чем CURSOR. Есть ли другой способ или в этом случае CURSOR \ WHILE является решением?

Спасибо

Ответы [ 2 ]

2 голосов
/ 01 июня 2011

CURSOR / WHILE отлично подходит в этом случае - лучшего способа вызвать sproc для строки не существует.Если производительность этого, вероятно, окажет влияние на систему, будьте осторожны при запуске.

Есть лучшая альтернатива, если вы можете ее кодировать - и это выполнить все «копирование»."для записей в Таблице A и ниже в связке операторов SQL, избегая вообще курсоров.Подводя итог этому предложению - на основе набора, а не на основе строки.

0 голосов
/ 01 июня 2011

Если нет существенного преимущества в том, что копирование выполняется в сохраненном процессе, вам лучше переписать встроенное копирование в текущем скрипте.

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

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