从零开始学Oracle—异常处理(八)
2009-04-09 13:13:33 来源:WEB开发网一、异常
(1) 程序错误
- 编译时
- 运行时
(2)异常
- 处理运行时错误
.PL/SQL是如何处理异常的?
- 错误引发异常
- 每当引发异常时,都将控制权传递给异常处理程序
- 异常处理程序处理异常
.异常中涉及的步骤
- 声明异常
- 引发异常
- 处理异常
.异常的类型
- 预定义的异常 --由Oracle服务器维护异常
- 非预定义的异常 又称'用户定义异常'
1、预定义异常
由Oracle为常见错误预定义
在DBMS_Standard程序包中提供了这些定义
不需要显式声明
declare
empJob emp.job%type;
begin
select job into empjob from emp where empno=0000;
DBMS_output.put_line('Employee job is '||emjob);
Exception
when No_data_found then
DBMS_output.put_line('错误了,查询没有返回行');
when too_many_rows then
DBMS_output.put_line('错误了,查询返回了多条数据');
when zero_divide then
DBMS_output.put_line('错误了,除数不能为零');
when others then --一定是最后一个处理的代码
DBMS_output.put_line('错误了,未知的错误信息');
end;
2、非预定义异常
无法预知的错误,如网络不通、服务没有启动、或其他错误,这样的异常需要用户要定义
declare
PK_conflict Exception; --用户定义异常
iCount int:=0;
begin
select count(*) into iCount from emp where empno='7369'
if iCount>0 then
raise Dup_Value; --引发异常
end if;
Exception
when PK_conflict then --处理异常
DBMS_output.put_line('表中已经有这条记录了');
end;
/
- ››oracle 恢复误删除的表和误更新的表
- ››Oracle分页查询排序数据重复问题
- ››Oracle创建dblink报错:ORA-01017、ORA-02063解决
- ››Oracle 提高SQL执行效率的方法
- ››Oracle 动态查询,EXECUTE IMMEDIATE select into...
- ››Oracle 11g必须开启的服务及服务详细介绍
- ››oracle性能34条优化技巧
- ››oracle数据库生成随机数的函数
- ››Oracle 数据库表空间容量调整脚本
- ››oracle单库彻底删除干净的方法
- ››Oracle创建表空间、创建用户以及授权、查看权限
- ››oracle 中 UPDATE nowait 的使用方法
赞助商链接