`
lixin_2002
  • 浏览: 21406 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

PL/SQL复习八 异常

阅读更多

异常分类:

1. 预定义异常: 处理常见的oracle错误

2. 非预定义异常: 处理预定义异常之外不能处理的错误

3. 自定义异常: 处理和oracle错误无关的其他情况

 

declare

  v_ename emp.ename%type;

begin

  select ename into v_ename from emp where empno = &no;

  dbms_output.put_line('雇员名:' || v_ename);

exception --以下是异常处理部分

  when no_data_found then

    dbms_output.put_line('雇员号不正确,请核实雇员号!');

  when others then

    dbms_output.put_line('未知异常');

end;

/

 

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

常见预定义异常:

CURSOR_ALREADY_OPEN     ORA-6511  试图打开一个已打开的游标

DUP_VAL_ON_INDEX        ORA-0001  试图破坏一个唯一性限制

INVALID_CURSOR          ORA-1001  试图使用一个无效的游标

INVALID_NUMBER          ORA-1722  试图对非数字值进行数字操作

LOGIN_DENIED            ORA-1017  无效的用户名或者口令

NO_DATA_FOUND           ORA-1403  查询未找到数据

NOT_LOGGED_ON           ORA-1012  还未连接就试图数据库操作

PROGRAM_ERROR           ORA-6501  内部错误

ROWTYPE_MISMATCH        ORA-6504  主变量和游标的类型不兼容

STORAGE_ERROR           ORA-6500  内部错误

TIMEOUT_ON_RESOURCE     ORA-0051  发生超时

TOO_MANY_ROWS           ORA-1422  SELECT INTO命令返回的多行

TRANSACTION_BACKED_OUT  ORA-006   由于死锁提交被退回

VALUE_ERROR             ORA-6502  转换或者裁剪错误

ZERO_DIVIDE             ORA-1476  试图被零除

 

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

使用非预定义异常:deptno是外键,如果输入的deptno在dept表中不存在,就会触发异常

declare

  e_exception1 exception;--定义异常名

  pragma exception_init(e_exception1, -2291);--将异常和oracle错误之间建立关联

begin

  update emp set deptno = &dno where empno = &eno;

exception

  when e_exception1 then

    dbms_output.put_line('该部门不存在');

end;

/

 

 

使用自定义异常:

declare

  e_exception1 exception;

  pragma exception_init(e_exception1, -2291);

  e_no_employee exception; --自定义异常

begin

  update emp set deptno = &dno where empno = &eno;

  if sql%notfound then --如果人员不存在 

    raise e_no_employee; --则抛出自定义异常

  end if;

exception

  when e_exception1 then

    dbms_output.put_line('该部门不存在');

  when e_no_employee then

    dbms_output.put_line('该雇员不存在');

end;

/

 

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

异常函数:

sqlcode: 返回错误号

sqlerrm: 返回异常消息

exception

  when others then

    dbms_output.put_line('错误号:'||sqlcode);

    dbms_output.put_line('错误消息:'||sqlerrm);

 

raise_application_error: 用于自定义错误消息,只能在子程序(过程、函数、包、触发器中使用) 不能在匿名块和客户端的子程序中使用

 

 

分享到:
评论

相关推荐

    Oracle中SQL以及PL/SQL复习专用

    根据提供的文件信息,我们可以归纳出一系列关于...以上内容涵盖了Oracle数据库中SQL与PL/SQL的基础知识和常用功能,对于学习和复习都非常有用。理解并熟练掌握这些概念和技术,将有助于提高数据库管理和开发的能力。

    PL/SQL基础

    学习Oracle PL/SQL时,建议先从基础语法开始,逐步掌握变量操作、流程控制和异常处理。然后深入到存储过程、函数和触发器的编写,最后了解如何利用游标、集合和记录处理数据库中的数据。通过实际的练习和项目,可以...

    oracle复习笔记之PL/SQL程序所要了解的知识点

    本文将深入探讨PL/SQL程序设计中的一些关键知识点,包括基本语法、记录类型、流程控制、游标使用、异常处理、存储函数与存储过程以及触发器。 1. PL/SQL基本语法: PL/SQL程序由声明、执行和异常处理三部分组成。...

    oracle第一天练习

    PL/SQL的基本结构包括声明部分、执行部分和异常处理部分。声明部分用于定义变量、游标、常量等;执行部分包含SQL语句和PL/SQL控制结构,如循环、条件判断等;异常处理部分用于捕获和处理运行时可能出现的错误。 在...

    Oracle选择题复习(带答案).doc

    本资源摘要信息涵盖了 Oracle 数据库的多个方面,包括数据库启动和关闭、参数文件、控制文件、表空间、PL/SQL 编程、异常处理、数据库性能等。 参数文件 * 在参数文件中,以 # 符号开头的行表示注释行。 * 创建一...

    plsql中文

    Oracle Database 12c Administrator Certified Professional的考试代码,这个文档可能是针对该考试的复习笔记或学习指南,包含PL/SQL部分的要点,如数据类型、子程序(PROCEDURE和FUNCTION)、异常处理等,对准备...

    我们公司的内部oracle开发课件(我的珍藏)

    Oracle开发不仅涉及到SQL语言的使用,还包括PL/SQL编程、数据库设计、性能优化等多个方面。1000.jpg可能是一张包含关键概念或流程图的图片,用于辅助理解复杂的Oracle架构或操作步骤。新建 Microsoft PowerPoint ...

    y2复习题及答案快快抢啊,而且分还低,答案真实!!!

    4. **选项D**:异常处理部分在PL/SQL块中不是必须的,因此此说法错误。 ### 子程序的定义与分类 #### 子程序概述 - **子程序**是已命名的PL/SQL块,可以带有参数并能在需要时随时调用。 #### 子程序特点 1. **...

    orcl复习资料.docx

    在上述的复习资料中,主要涉及了两个重要的PL/SQL编程概念:循环和异常处理。 1. 循环: - 简单Loop循环、While循环和For循环是PL/SQL中的基本控制结构,用于重复执行一段代码直到满足特定条件为止。 - 任务是...

    ORACLE复习资料

    本复习资料主要涵盖了Oracle中的数据操作语言(DML)和过程化SQL(PL/SQL)的相关实例,这对于理解和掌握Oracle数据库的操作至关重要。 1. 数据操作语言(DML): DML是Oracle中用于插入、更新、删除和查询数据的...

    Oracle期末考试复习题.pdf

    21. **PL/SQL异常处理**:显示用户自定义错误使用`RAISE`语句。 22. **隐式游标状态**:隐式游标中表示无数据返回的状态是`%NotFound`。 23. **PL/SQL游标**:关于PL/SQL中的游标,这里的信息不完整,但通常游标...

    良心出品oracle数据库期末复习.doc

    这篇文档"良心出品oracle数据库期末复习.doc"涵盖了Oracle数据库的基础知识,包括数据文件、日志文件、控制文件等数据库组件,以及数据库操作、表空间管理、用户权限、SQL语句和PL/SQL编程等内容。 一、Oracle...

    Oracle面试复习(一)

    面试可能会涉及到编写和解释PL/SQL代码,处理异常,以及如何使用游标。 5. **性能优化**:Oracle面试通常会涵盖如何诊断和解决性能问题,如使用EXPLAIN PLAN分析查询执行路径,调整SQL语句,或通过索引优化提高查询...

    青鸟2单元内测答案

    此外,理解和运用事务控制、游标、异常处理等核心概念也是PL/SQL学习的重点。在准备这部分考试时,考生需要熟悉SQL语句的基本语法,包括DML(Data Manipulation Language)用于插入、删除和修改数据,以及DDL(Data ...

    oracle数据库期末复习.doc

    - **异常处理**:PL/SQL中的异常处理通常在异常处理块中实现,通过`EXCEPTION`关键字定义异常处理部分。 - **标识符长度**:PL/SQL标识符的最大长度为30个字符。 - **循环退出关键字**:在循环语句中使用`EXIT`...

    Oracle复习考试题

    5. **PL/SQL编程**:理解PL/SQL的语法结构,包括变量声明、流程控制语句(IF、CASE、LOOP等)、异常处理等。重点掌握存储过程、函数的定义与调用,以及包的使用,了解如何封装逻辑和复用代码。 6. **触发器定义**:...

    oracle数据库经典复习试题.pdf

    18. **除以零异常**:在PL/SQL中,除以零操作会触发`ZERO_DIVIDE`异常。 19. **更新游标**:要更新游标结果集中的当前行,可以使用`WHERE CURRENT OF`子句。 20. **隐式游标**:Oracle为每个SQL语句自动提供了一个...

Global site tag (gtag.js) - Google Analytics