Генерация пользовательского кода завершения
Синтаксис
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