7错误消息与异常处理
7.1异常的介绍
(1)处理异常分为三个步骤:
,一声明异常
,B引发异常
,C处理异常
(2)异常的特征
,一个错误类型:ORA-xxxxx 运行时错误
,,,,,,,,,,,,,,PLS-xxxxx 编译错误
,B错误代码:xxxxx
,C错误的文本描述
案例1:编译错误的案例请
完成创建或替换过程p1是
,2,开始
,3,零;
,4,
结束;5,//
创建过程。
完成创建或替换过程p1是
,2,开始
,3,null ,,,,,,,,,——特意不写分号
,4,
结束;5,//
警告:程序创建编译错误只,,,,,,,——出现警告
完成显示error ,,,——查看错误消息过程P1
错误:
行/坳误差
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4/1 ,,请- 00103:遇到符号“结束”期待的一个
,,,:
,,,,
,,,象征“;”代替“结束”继续。
案例2:运行时错误——在编译的时候没有错误,但是在执行的时候发生错误。
完成创建或替换过程p2是
,2,,v_descr varchar2 (20);
,3,开始
,4,,选择hrc_descr
,5,,,,到v_descr
,6,,,从hrc_tab
,7,,hrc_code=8;
,8,dbms_output.put_line (to_char (v_descr));
,9,结束;
, 10,//
创建过程。
完成exec p2,,,,,,,——运行一个存储过程
开始p2;结束;
*
行错误1:
ora - 01403:没有数据发现
ora - 06512:“PLSQL。P2”, 4号线
ORA - 06512:在第1行
总结:
,一个PLSQL错误——编译错误,在执行之前就已经报错,需要检查程序,修改程序,调试
, B奥拉错误,,——运行时错误,出现这种错误的时候需要手工处理,可以采用第三方软件的单步调试方式处理
(2)异常处理中的声明,分为三个部分
,一个异常声明,在声明自己定义异常的时候需要用到这个方法。
, B提高语句:显示地引发异常
, C编译指示excetption_init这个指令可以将oracle错误和自己定义异常关联起来
,函数(需要定义变量来接收)
,,,,
,,sqlcode -返回错误的代码号,如果没有错误就返回0,可以根据sqlcode返回的值查询官方文档,获得更详细的错误描述
,,,sqlerrm——返回错误的文本描述,如果没有错误返回正常或者成功完成,也就是官方文档定义的错误
(3)异常处理的常见案例
声明
,v_descr varchar2 (20);
开始,选择hrc_descr
,,,到v_descr
,,,从hrc_tab
,,hrc_code=8;
,dbms_output.put_line (v_descr);
例外当no_data_found then ,,,,,——异常的名称
,dbms_output。put_line(“不存在”);
,
no_data_found ——甲骨文预定义好的异常的名称,甲骨文官方文档上有每个异常名称描述和引发的场景介绍
《PL/SQL用户指南和参考》pdf版本中第264页
sqlcode与sqlerrm两个函数的使用
声明
,v_descr varchar2 (20);
,v_sqlcode数量;
,v_sqlerrm varchar2 (200),
开始,选择hrc_descr
,,,到v_descr
,,,从hrc_tab
,,hrc_code=8;
,dbms_output.put_line (v_descr);
例外当no_data_found
,v_sqlcode:=sqlcode;
,v_sqlerrm:=sqlerrm;
,dbms_output。put_line(“不存在”);
,dbms_output。put_line(“犯错:一个错误信息:“| | to_char (v_sqlcode));
,dbms_output.put_line (v_sqlerrm);
,
输出:
存在错了:一个错误信息:100,,,,,,,100是错误的代码号,其他的错误sqlcode都是奥拉-后面的号码,这个异常特殊
ora - 01403:没有数据found ,,,,,,,,,,——错误的描述
对程序的异常进行处理,让程序不会在发生异常
声明
,v_descr varchar2 (20);
,v_sqlcode数量;
,v_sqlerrm varchar2 (200),
开始,选择hrc_descr
,,,到v_descr
asdfasdg ,,从hrc_tab
,,hrc_code=8;
,dbms_output.put_line (v_descr);
例外当no_data_found
,v_sqlcode:=sqlcode;
,v_sqlerrm:=sqlerrm;
,dbms_output。put_line(“不存在”);
,dbms_output。put_line(“犯错:一个错误信息:“| | to_char (v_sqlcode));
,dbms_output.put_line (v_sqlerrm);
,插入hrc_tab值(8 ' asdfasdg ');
,提交;
结束;
第一次运行
输出:
存在错了:一个错误信息:100,,,,,,
ora - 01403:没有数据发现
再一次运行
输出:
asdfasdg
(4) PLSQL异常的功能性分类
,null