网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > 数据库技术 > Oracle > 性能调优 > PL/SQL异常处理初步-性能调优  

PL/SQL异常处理初步-性能调优

2008-06-17  作者:bitsCN整理  来源:中国网管联盟  点评 投稿 收藏

  异常传播

  没有处理的异常将沿检测异常调用程序传播到外面,当异常被处理并解决或到达程序最外层传播停止。
在声明部分抛出的异常将控制转到上一层的异常部分。 网管下载dl.bitscn.com

 BEGIN
executable statements
BEGIN
today DATE:=''SYADATE''; --ERRROR
BEGIN --内部块开始
dbms_output.put_line(''this line will not execute'');
EXCEPTION
WHEN OTHERS THEN
--异常不会在这里处理
END;--内部块结束 网管有家www.bitscn.net

EXCEPTION
WHEN OTHERS THEN
处理异常
END 网管朋友网www_bitscn_net

网管朋友网www_bitscn_net

  执行部分抛出的异常将首先传递到同一块的异常部分,如果在同一块的异常部分没有处理这个异常的处理器,那么异常将会传播到上一层的异常部分中,一直到最外层。 中国网管联盟bitsCN.com

  在异常部分抛出的异常将控制转到上一层的异常部分。 网管朋友网www_bitscn_net

  处理异常将停止异常的传播和解决。有时用户希望在错误发生时,程序仍然能执行一些动作,要达到这个目的,可以把希望执行的动作放在异常处理器中,然后执行不带参数的RAISE语句,RAISE语句将重新抛出出现的异常,允许他继续传播。

 DECLARE
order_too_old EXCEPTION;
BEGIN
RAISE order_too_old;
EXCEPTION
WHEN order_too_old THEN
DECLARE
file_handle UTL_FILE.FILE_TYPE;
BEGIN
--open file
file_handle:=UTL_FILE.FOPEN
(location=>''/ora01/app/oracle/admin/test/utlsir''
,filename=>''error.log''
.open_mode=>''W'');
--write error stack
UTL_FILE.PUT_LINE(filehandle,
DBMS_UTILITY.FORMAT_ERROR_STACK);
--write the call stack
UTL_FILE.PUT_LINE(filehandle,
DBMS_UTILITY.FORMAT_CALL_STACK);
--close error log
UTL_FILE.FCLOSE(file_handle);
RAISE; --re-raise the exception
END
END
中国网管论坛bbs.bitsCN.com

  如果从FORMAT_XXX_STACK输出一个很大的值,那么使用DBMS_OUTPUT或UTL_FILE显示错误或调用堆的异常部分自身也会抛出异常,这两个堆常规下最多能返回2000字节,但utl_file.put_line被限制在1000字节以内,而dbms_output.put_line限制在512字节内。如果使用前面的代码并且不允许这种可能性,那么在异常处理器中将抛出一个未处理的异常。 网管下载dl.bitscn.com

  GOTO语句不能用于将控制从执行部分传递到异常部分或反之。

网管u家u.bitsCN.com

  已命名异常

网管有家bitscn.net

  在PL/SQL块的异常部分只有已命名的异常才能被WHEN子串处理,ORACLE包含了一系列已命名的异常,这些异常都声明在STANDARD包中,这些内建异常在这里就不一一讲述,有兴趣的读者可以查阅有关资料。

网管联盟bitsCN_com

  网管网www_bitscn_com

网管有家bitscn.net

TAGs   性能   初步   处理   异常   部分   错误   程序   PL/SQL   一个   RAISE      
 上一篇:MySQL数据库优化(九)-性能调优   下一篇:Oracle的备份方式具有不同的恢复特性-性能调优
PL/SQL异常处理初步-性能调优 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
最新推荐文章:
网管论坛交流: