有人可以让我知道我在这里犯了什么错误吗? 我们是否可以通过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;
/
如果没有找到数据,则
*
第5行出现错误:
ORA-06550:第5行,第4列:
PLS-00382:表达式的类型错误
ORA-06550:第5行,第1列:
PL / SQL:语句被忽略
答案 0 :(得分:2)
将条件检查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;
/