Это не трудно найти разработчиков who think cursors are gauche, но мне интересно, как решить следующую проблему без одного:Запуск хранимой процедуры с параметрами, в результате запроса
Допустим, я прок называется uspStudentDelete, который принимает в качестве параметра @Студенческий билет.
uspStudentDelete применяет кучу каскадной логики мягкого удаления, отмечая флаг в таблицах типа «классы», «оценки» и т. Д. Как неактивные. uspStudentDelete хорошо проверен и работал некоторое время.
Что бы лучший способ запустить uspStudentDelete по результатам запроса (например, выберите studentid из студентов где ...) вTSQL?
Курсоры не являются gauche, они являются производителями убийц. Их следует избегать в любое время, когда набор данных будет работать. Это может быть разница между процессом, принимающим часы или дни или миллисекунды или минуты. – HLGEM
От этого явно зависит. Для больших томов следует использовать процедуру удаления, чтобы иметь возможность обрабатывать несколько учеников и выполнять все зависимые удаления в режиме набора (решение HLGEM). Для небольших томов вызов одноуровневого удаления не будет выполняться плохо и избавит вас от необходимости перезаписывать SP (решение Andomar). –
** вы можете зацикливаться без курсора. ** Мне пришлось ускорить медленные петли курсора, где была сумасшедшая логика IF, и вызывает многие другие процедуры в цикле. В некоторых случаях было невозможно удалить петлю. Однако я удалил курсор (оставил цикл) и все еще имел значительные улучшения производительности. просто google "sql server cursor free loop" –