plsql异常之exception_init

论坛 期权论坛 脚本     
匿名技术用户   2021-1-3 01:23   50   0

常用异常处理

declare
e_duplicate_name exception;
v_ename emp.ename%type;
e_newname emp.ename%type := 'smith';
begin
select ename into v_ename from emp where empno = 7639;
if v_ename = v_newname then
raise e_duplicate_name;
end if;
insert into emp values (23232, 3244, v_newname);
exception
when e_duplicate_name then
dbms_output.put_line('duplicate name');
when others then
dbms_output.put_line(sqlcode || sqlerrm);
end;


主要是为了对ora-类的不是预定义异常的异常添加个名称。

declare
e_missingnull exception;
pragma exception_init(e_missingnull, -1400);
begin
insert into empbak (empno) values (null);
commit;
exception
when e_missingnull then
dbms_output.put_line('触发了1400错误' || sqlerrm);
rollback;
end;
/

触发了1400错误ORA-01400: 无法将 NULL 插入 ("BAIXYU"."EMPBAK"."EMPNO")


raise_application_error在存储的子程序中调用。


分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP