Доступные версии документации

Выполнение процедуры

Определение оператора выполнения временной процедуры.

Спецификация

   
<выполнение временной процедуры>::=
EXECUTE BLOCK [AUTHID {CURRENT_USER |DEFINER}]
[RESULT тип данных] [FOR DEBUG]
процедурный блок

Синтаксические правила

Правила оформления <процедурного блока> приведены в разделе Общий вид процедурного блока.

Примечание

Опции AUTHID и FOR DEBUG не запрещены по синтаксису, но реально их использовать затруднительно.

Примеры

  1. Временная процедура.

    execute block result int
    declare
      var i int; //
    code
      i := 1; //
      print("execute block");//
      return i; //
    end;
  2. Временная процедура с SQL-запросом.

    create or replace table test(i int);
    execute block result int
    declare
      var i int; //
    code
      i := 12; //
      execute direct "insert into test values(1)";//
      execute "insert into test values(2)";//
      return i; //
    end;
    select * from test;
  3. Временная процедура с курсором.

    execute block result cursor(i int)
      declare //
      var b typeof(result); //
      code //
      open b for "select i from test;"; //
      return b; //
    end;
  4. Рекурсивный вызов временных процедур.

    execute block result int
    declare
      var i int; //
    code
      i := 123; //
      execute direct "execute block result int for debug declare var i int; //
        code i:=12; //
        execute direct \"insert into test values(3)\"; execute \"insert into test
        values(4)\"; //
        return i; end;"; //
     return i; //
    end;
    select * from test;
Заметили ошибку?
Выделите текст и нажмите Ctrl + Enter