ORACLE异常处理
来源:互联网 发布:大学生网络直播的看法 编辑:程序博客网 时间:2024/05/26 20:22
预定义异常:
declarev_num number;begin v_num := 100/ 0; exception --除数不为0 when zero_divide then DBMS_OUTPUT.PUT_LINE( '1'); --其他异常 when others then DBMS_OUTPUT.PUT_LINE( '2');end;
以上是异常处理的基本语法,输出如下:
OTHERS表示所有的异常,从输出可以看出PL/SQL的异常处理机制和java的不同,自上而下被第一个异常处理块处理完之后就跳出异常处理。
--以下sql可以查询所有数据库预定义异常SELECT * FROM DBA_SOURCE T WHERE T.name = 'STANDARD' AND T.TEXT LIKE '%EXCEPTION_INIT%';
非预定义异常:
oracle 中更多的是非预定义异常。也就是说,他们只有错误编码和相关的错误秒速,而没有名称的异常是不能被不错的。例如:
执行以下sql:
update SYS_CUST_1111 t set t.areaid=1;
会得到如下结果:
可以用以下方法捕捉以上异常(类似上面的 SELECT * FROM DBA_SOURCE T WHERE T.name = 'STANDARD' AND T.TEXT LIKE '%EXCEPTION_INIT%'的text字段内容):
declarev_sql varchar2( 400);my_942_exception exception;pragma EXCEPTION_INIT (my_942_exception, -942);begin v_sql:='update SYS_CUST_1111 t set t.areaid=1'; execute immediate v_sql; exception when my_942_exception then DBMS_OUTPUT.PUT_LINE( '1111');end;
输出结果如下:
自定义异常:
例子如下:
--自定义异常declarev_num number := 1;test_exception exception;pragma exception_init (test_exception,-20001);begin if v_num= 1 then raise test_exception; end if;end;
执行会有如下结果:
注意:错误号的范围是-20999~-20000的负数,这个范围内的错误号可以随便使用,不用担心被占用。
可以使用raise_application_error抛出带说明的异常:
declarev_num number := 1;begin if v_num= 1 then raise_application_error(- 20001,'错误啦!!' ); end if;end;
结果:
0 0
- oracle数据异常处理
- oracle的异常处理
- Oracle异常处理
- Oracle异常处理
- Oracle的异常处理
- oracle异常处理 例解
- ORACLE中的异常处理
- oracle 异常处理(转载)
- ORACLE异常处理总结
- ORACLE中的异常处理
- Oracle异常处理总结
- Oracle的异常处理
- oracle的异常处理
- oracle的异常处理
- ORACLE异常处理总结
- oracle异常处理机制
- Oracle异常处理总结
- ORACLE异常处理
- Java中的条件运算符以及运算符的优先级,Java条件语句之 if
- LA 6527 Counting ones 数位dp
- shell中的括号(小括号,大括号/花括号)
- Linux下的IO操作
- Ext JS Kitchen Sink [Learning by doing](2)ArrayGrid
- ORACLE异常处理
- 【CODEFORCES】 B. Wonder Room
- cocos2d出错
- MyBatis Generator如何Generate
- C 中双冒号(::)和冒号(:)
- MYSQL日期处理大全
- 金和OA再度牵手“美宜佳”,打造华南便利店连锁行业“巨无霸”
- GitHub上史上最全的Android开源项目分类汇总
- TelephoneManager学习之二,添加黑名单并自动挂断电话