Я создал хранимую процедуру, которая обрабатывала данные в этой таблице.Должен ли я воздерживаться от использования цикла в SQL?
Чтобы обработать эти данные, я должен выполнить цикл while
, потому что мне нужно вычислить дату окончания, которая отсутствует на одной таблице.
Датой окончания первой записи должна быть дата начала второй записи -1 день.
Теперь, когда я представляю это моему старшему, он сказал мне, что это большой НЕТ, чтобы использовать цикл внутри хранимой процедуры. И предоставленное решение, что мой старший сделал, создал вид, используя эту таблицу, и создал несколько объединений, чтобы генерировать недостающие данные, которые мне нужны.
Является ли моя петля неправильной? Должен ли я воздерживаться от использования цикла в моей хранимой процедуре в будущем?
SQL-декларативно; хранимые процедуры являются процедурами. Я сделаю все, что в моих силах, чтобы увидеть, могу ли я выполнить требование декларативно, прежде чем прибегать к хранимой процедуре. Нет циклов. – duffymo
Петля чаще всего не является плохим выбором. Попытайтесь сделать это без него. Обработку «по строкам», которую вы выполняете в цикле, также называется «медленным замедленным». –
Вместо использования цикла вы можете использовать оконные выражения ('over ... partition') или использовать сложные объединения. Циклы в 90-процентных случаях не являются хорошей практикой в SQL. – Fka