Генерация пользовательского кода завершения

Синтаксис
 
raise_error(<код>)

<код> – целочисленное значение из диапазона от 10200 до 10999 (включительно).

Описание

Функция завершает текущую исполняемую процедуру или триггер и выставляет указанный <код> в качестве кода завершения всего запроса, т.е. запроса execute на запуск процедуры или SQL-оператора, инициировавшего запуск триггера. Это позволяет, в частности, выполнить в триггере откат SQL-запроса, вернув соответствующий пользовательский код завершения.

Возвращаемое значение

Заданный код завершения.

Примеры
  1.  

    create or replace procedure proc_re1(in i integer; out res integer) result integer for debug
    declare
      exception DIVZERO for DIVZERO; //
      var ch int; //
    code
      res:=50; //
      ch:=100/i; //
      res:=res/2; //
      return ch; //
    exceptions
      when DIVZERO then
        raise_error (10333); //
    end;
    call proc_re1(0);
    [Linter Code 10333] Native error 10333
  2.  

    create or replace procedure proc_re1(in i integer; out res integer) for debug
    declare
      var ch int; //
    code
      res:=20*i; //
      if res < 100 then
        raise_error (10555); //
      endif; //
    end;
  3.  

    execute block result int
    declare
      var S int; //
      var I int; //
      var c cursor(i int); //
    code
      open c for "select max(personid) from auto;"; //
      S := c.i + 1; //
      close c; //
      I := 0; //
      while (I < S) loop
        I := I + 1; //
        raise_error(10299); //
      endloop; //
      return 0;  //
    exceptions
      when all then
        resignal; // Error to up
    end;
    [Linter Code 10299] Native error 10299
  4.  

    execute block result int
    declare
      var S int; //
      var I int; //
      var c cursor(i int); //
    code
      open c for "select max(personid) from auto;"; //
      S := c.i + 1; //
      close c; //
      I := S/0; //
      return S; //
    exceptions
      when all then
        raise_error(10299); // Error to up
    end;
    [Linter Code 10299] Native error 10299