Oracle笔记 七、PL/SQL 异常处理

简介:
--异常处理
declare
  sNum number := 0;
begin
  sNum := 5 / sNum;  
  dbms_output.put_line(sNum);
exception 
  when others then
    dbms_output.put_line('is Error!');
end;
 
--自定义异常
declare
       ex_custom_invaild_age exception; --自定义的异常myerr
       age int;
begin
     age := &请输入年龄;
     if (age < 0) then
        raise ex_custom_invaild_age; --引发自定义异常
     else
        dbms_output.put_line('年龄是:' || age);     
     end if;
exception 
      when ex_custom_invaild_age then
        dbms_output.put_line('非法的年龄');
end;
 
--引发应用程序异常
--raise_application_error(异常编号,说明);
declare        
       age int;
begin
     age := &请输入年龄;
     if (age < 0) then
        raise_application_error(-20500, '年龄不能为负数');
     else
        dbms_output.put_line('年龄是:' || age);
     end if;
end;
 
--非预定义异常
declare     
     ex_custom_error exception;
     pragma exception_init(ex_custom_error, -1); --把一个编号和一个自定义异常关联,
     --相当于把-1编号的异常命名为ex_custom_error,这样就可以捕获这种异常
begin       
     insert into dept values(10, 'aaa', 'bbb');
     exception       
       when ex_custom_error then
       dbms_output.put_line('部门编号已经存在');
end;
 
--异常处理
declare
  vSal emp.sal%type;
begin
  select sal into vSal from emp;
  exception
    when too_many_rows then
      dbms_output.put_line('多条数据');
    when others then
      dbms_output.put_line('Error');
end;
 
declare
  vSal emp.sal%type;
begin
  select sal into vSal from emp where empno = 1;
  exception
    when no_data_found then
      dbms_output.put_line('没有数据');
    when others then
      dbms_output.put_line('Error');
end;
 
--异常日志处理
create table errorLog (
       id number primary key,
       errCode number,
       errMsg varchar2(1024),
       errDate date
);
--创建序列,从1开始,每次加1
create sequence seq_errorLog_id start with 1 increment by 1;
 
declare
       vDeptno dept.deptno%type := 10;
       vErrCode number;
       vErrMsg varchar2(1024);
begin
  delete from dept where deptno = vDeptno;
  commit;
  exception
    when others then
      rollback;
      vErrCode := SQLCODE;
      vErrMsg := SQLERRM;
      insert into errorLog values(seq_errorLog_id.nextval, vErrCode, vErrMsg, sysdate);
      commit;
end;
 
select * from errorLog;





本文转自hoojo博客园博客,原文链接:http://www.cnblogs.com/hoojo/archive/2011/05/03/2035350.html,如需转载请自行联系原作者
目录
相关文章
|
13天前
|
SQL 存储 关系型数据库
SQL自学笔记(3):SQL里的DCL,DQL都代表什么?
本文介绍了SQL的基础语言类型(DDL、DML、DCL、DQL),并详细说明了如何创建用户和表格,最后推荐了几款适合初学者的免费SQL实践平台。
49 3
SQL自学笔记(3):SQL里的DCL,DQL都代表什么?
|
13天前
|
SQL 数据挖掘 数据库
SQL自学笔记(2):如何用SQL做简单的检索
本文深入介绍了SQL的基本语法,包括数据查询、过滤、排序、分组及表连接等操作,并通过实际案例展示了SQL在用户研究中的应用,如用户行为分析、用户细分、用户留存分析及满意度调查数据分析。
21 0
SQL自学笔记(2):如何用SQL做简单的检索
|
13天前
|
SQL 数据挖掘 关系型数据库
SQL自学笔记(1):什么是SQL?有什么用?
本文为用户研究新手介绍SQL(结构化查询语言),解释了SQL的基本概念、入门方法及在用户研究中的应用通过实际案例说明,如用户行为分析、用户细分和满意度调查数据分析,展示了SQL在用户研究中的重要作用。
34 0
SQL自学笔记(1):什么是SQL?有什么用?
|
1月前
|
SQL 数据采集 监控
局域网监控电脑屏幕软件:PL/SQL 实现的数据库关联监控
在当今网络环境中,基于PL/SQL的局域网监控系统对于企业和机构的信息安全至关重要。该系统包括屏幕数据采集、数据处理与分析、数据库关联与存储三个核心模块,能够提供全面而准确的监控信息,帮助管理者有效监督局域网内的电脑使用情况。
22 2
|
2月前
|
SQL 监控 Oracle
Oracle SQL性能优化全面指南
在数据库管理领域,Oracle SQL性能优化是确保数据库高效运行和数据查询速度的关键
|
2月前
|
SQL 存储 Oracle
Oracle数据库SQL语句详解与应用指南
在数字化时代,数据库已成为各类企业和组织不可或缺的核心组件。Oracle数据库作为业界领先的数据库管理系统之一,广泛应用于各种业务场景。掌握Oracle数据库的SQL语句是数据库管理员、开发人员及运维人员的基本技能。本文将详细介绍Oracle数据库SQL语句的基本概念、语法、应用及最佳实践。一、Or
77 3
|
2月前
|
SQL Oracle 关系型数据库
Oracle SQL:了解执行计划和性能调优
Oracle SQL:了解执行计划和性能调优
65 1
|
2月前
|
存储 Oracle 关系型数据库
Oracle数据库的应用场景有哪些?
【10月更文挑战第15天】Oracle数据库的应用场景有哪些?
190 64
|
8天前
|
存储 Oracle 关系型数据库
数据库数据恢复—ORACLE常见故障的数据恢复方案
Oracle数据库常见故障表现: 1、ORACLE数据库无法启动或无法正常工作。 2、ORACLE ASM存储破坏。 3、ORACLE数据文件丢失。 4、ORACLE数据文件部分损坏。 5、ORACLE DUMP文件损坏。
41 11
|
21天前
|
Oracle 关系型数据库 数据库
Oracle数据恢复—Oracle数据库文件有坏快损坏的数据恢复案例
一台Oracle数据库打开报错,报错信息: “system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。管理员联系我们数据恢复中心寻求帮助,并提供了Oracle_Home目录的所有文件。用户方要求恢复zxfg用户下的数据。 由于数据库没有备份,无法通过备份去恢复数据库。

推荐镜像

更多