FirebirdSQL logo

SUSPEND

Назначение

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

Доступно в

PSQL

Синтаксис
SUSPEND;

Оператор SUSPEND передаёт значения выходных параметров в буфер и приостанавливает выполнение хранимой процедуры (PSQL блока). Выполнение остаётся приостановленным до тех пор, пока вызывающая сторона не получит содержимое буфера.Выполнение возобновляется с оператора, следующего непосредственно после оператора SUSPEND.Чаще всего это будет новой итерацией циклического процесса.

Note
  1. Оператор SUSPEND может встречаться только в хранимых процедурах или подпроцедурах, а также в анонимных блоках EXECUTE BLOCK.

  2. Наличие ключевого слова SUSPEND определяет хранимую процедуру как выбираемую (selectable) процедуру.

  3. Приложения, использующие API интерфейсы, обычно делают выборку из хранимых процедур прозрачно.

  4. Если выбираемая (selectable) процедура выполняется с использованием EXECUTE PROCEDURE, она ведет себя как исполняемая процедура. Когда в такой хранимой процедуре выполняется инструкция SUSPEND, это то же самое, что выполнение инструкции EXIT, что приводит к немедленному завершению процедуры.

  5. Оператор SUSPEND “нарушает” атомарность блока, внутри которого он находится. В случае возникновения ошибки в селективной процедуре, операторы, выполненные после последнего оператора SUSPEND, будут откачены. Операторы, выполненные до последнего оператора SUSPEND, не будут откачены, если не будет выполнен откат транзакции.

Примеры SUSPEND

Example 1. Использование оператора SUSPEND в селективной хранимой процедуре.
CREATE PROCEDURE GEN_100
RETURNS (
  I INTEGER
)
AS
BEGIN
  I = 1;
  WHILE (1=1) DO
  BEGIN
    SUSPEND;
    IF (I=100) THEN
      EXIT;
    I = I + 1;
  END
END
См. также:

EXIT.