Процедурное расширение языка Transact-SQL также содержит следующие операторы:
♦ return;
♦ goto;
♦ raiseerror;
♦ waitfor.
Оператор return имеет ту же функциональность внутри пакета, что и оператор break внутри while. Это означает, что оператор return приводит к завершению выполнения пакета, после чего будет выполняться первый оператор, следующий сразу после пакета.
Оператор goto передает управление на метку, которая стоит перед оператором Transact-SQL в этом же пакете. Оператор raiseerror генерирует сообщение об ошибке, созданное пользователем, и устанавливает флаг системной ошибки. Номер ошибки, определенной пользователем, должен быть больше чем 50 000. (Все номера ошибок, меньше или равные 50 000, определены в системе и резервируются для Database Engine.) Значение кода ошибки сохраняется в глобальной переменной @@error.
Оператор waitfor либо определяет временной интервал (если используется опция delay), либо задает время (если указана опция time), в течение которого система должна перейти в состояние ожидания, прежде чем выполнить следующий оператор в пакете. Синтаксис этого оператора:
waitfor ( delay 'time' I time 'time' I timeout 'timeout' }
Опция delay сообщает системе базы данных, что следует подождать, пока не пройдет заданный промежуток времени, time задает время в одном из принятых форматов даты. (Пример 13.5 показывает использование оператора waitfor.) timeout задает время в миллисекундах ожидания появления сообщения из очереди сообщений.