WEB开发网
开发学院数据库Oracle 从零开始学Oracle—异常处理(八) 阅读

从零开始学Oracle—异常处理(八)

 2009-04-09 13:13:33 来源:WEB开发网   
核心提示:一、异常 (1) 程序错误 - 编译时 - 运行时 (2)异常 - 处理运行时错误.PL/SQL是如何处理异常的? - 错误引发异常 - 每当引发异常时,都将控制权传递给异常处理程序 - 异常处理程序处理异常.异常中涉及的步骤 - 声明异常 - 引发异常 - 处理异常.异常的类型 - 预定义的异常 --由Oracle服

一、异常

(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;
/

1 2 3  下一页

Tags:开始 Oracle 异常

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接