plsql的错误信息与异常处理

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

plsql的错误信息与异常处理