plsql повысить_application_error с предопределенным исключением - PullRequest
0 голосов
/ 20 ноября 2018

Может кто-нибудь сообщить мне, какую ошибку я здесь делаю?Можем ли мы иметь предопределенное исключение с помощью Raise_application_error?

declare
        s1 emp.sal %type;
begin
        select sal into s1 from emp where ename='SOMDUTT';
        if no_data_found then
            raise_application_error(20001, 'somdutt is not there');
        end if;
        if(s1 > 10000) then
            raise_application_error(20002, 'somdutt is earing a lot');
        end if;
        update emp set sal=sal+500 where ename='SOMDUTT';
end;
/

, если no_data_found тогда
*
ОШИБКА в строке 5:
ORA-06550: строка 5, столбец 4:
PLS-00382: выражение имеет неправильный тип
ORA-06550: строка 5, столбец 1:
PL / SQL: оператор игнорируется

1 Ответ

0 голосов
/ 20 ноября 2018

Переместите условие для проверки no_data_found в блок исключений.

Кроме того, вы можете использовать только номер ошибки в диапазоне от -20000 до -20999

declare
        s1 emp.sal%type;
begin
        select sal into s1 from emp where ename='SOMDUTT';

        if s1 > 10000  then
            raise_application_error(-20002, 'somdutt is earing a lot');
        end if;
        update emp set sal=sal+500 where ename='SOMDUTT';
     EXCEPTION

     when no_data_found then
            raise_application_error(-20001, 'somdutt is not there');
end;
/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...