`

PL/SQL(oracle)5_异常

阅读更多

一、异常概念:指的是程序在运行过程中出现的错误,当异常发生时,可执行部分的代码会终止运行,
转到响应的异常处理机部分去继续执行。
二、异常的触发方式?
    自动触发:当满足一定的条件时,自动发生的异常。
    手动触发:需要程序员在块中写raise语句来发生异常。
三、异常的处理方式?   
    在自己的块中写异常处理机。
    在调用环境中传播。
四、异常的类型
    1、预定义异常:由Oracle服务器事先声明好的异常,自动被触发的,有名字,有编号。
    2、未预定义异常:自动被触发,有编号,没名字。
    3、自定义异常:oracle不自动提供,手动触发的,没名字,没编号。
五、如果写异常处理机:
    Exception
       When 异常名字1 [Or  异常名字2 ....] Then
            异常处理代码;
     【When 异常名字11 [Or  异常名字21 ....] Then
            异常处理代码;
       When Others then
            异常处理代码;】
六、如何处理预定义异常?
   在exception部分写异常处理机即可。
   练习:使用insert子句,把员工表中的数据复制一边,要写异常处理代码。

   Begin                                                                
       Insert Into emp Select * From emp;
   Exception
       When dup_val_on_index Then
            dbms_output.put_line('主键重复');
   End;
 


七、SQLCODE和SQLERRM两个函数
    Sqlcode:返回最近执行的一条Sql语句的执行代码。
        =0,表示没有异常,成功。
        =100,表示发生NO_Data_found异常。
        <0,表示出现其他异常。
     Sqlerrm:返回执行一条SQL语句的相关信息。  
    
     既可以用在可执行块,也可以用在异常处理块。
     通常使用Sqlcode 是否等于0做sql语句执行成功与否的判断。
八、如何处理未预定义异常?
    1、在declare部分先声明异常,语法:  异常名  Exception;
    2、使用预编译指令 Pragma exception_init(异常名,异常号);把异常名和异常号进行关联。
    3、写异常处理机即可。
    注意:使用该种方式既可以处理预定义异常,也可以处理未预定义异常,但要注意同一个异常被两个异常处理机
    处理的情况。
九、如何处理自定义异常?
    1、在declare部分先声明异常,语法:  异常名  Exception;
    2、在程序可执行部分,想抛出异常的代码中使用 raise 异常名,进行触发异常。
    3、写异常处理机即可。
    练习:使用异常处理方式,判断员工的平均工资,如果平均工资大于5000,触发too_high_exception,否则,触发too_low_exception.

    Declare
           too_high_exception Exception;
           too_low_exception Exception;
           v_avgsal emp.sal%Type;
    Begin
          Select Avg(sal) Into v_avgsal  From emp;
         
          If v_avgsal >5000 Then
             Raise too_high_exception;
          Else
             Raise too_low_exception;
          End If;
    Exception
          When too_high_exception Then
               dbms_output.put_line('平均工资太高');
          When too_low_exception Then   
               dbms_output.put_line('平均工资正常');
    End;
 


十、异常传递    
      略。

分享到:
评论

相关推荐

    PL/Sql_Demo_Oracle

    在Oracle数据库中,PL/SQL用于编写存储过程、函数、触发器、游标、异常处理等,这些都极大地增强了数据库的功能和性能。通过使用PL/SQL,开发者可以编写复杂的逻辑,提高数据处理的效率,并且能够更好地控制并发访问...

    PLSQL.zip_oracl_oracle pl/sql ppt_pl sql ppt tutorial_pl/sql_pls

    5. **异常处理**:PL/SQL内置了异常处理机制,允许程序员预定义和捕获运行时错误,以优雅的方式处理程序中断。 **PL/SQL在Oracle中的应用** 1. **数据库操作**:通过PL/SQL,开发者可以直接在数据库中执行插入、...

    oracle10g_pl/sql

    Oracle 10g PL/SQL 是Oracle数据库系统中用于创建和管理存储过程、函数、触发器等数据库对象的编程语言。本教程旨在为初学者提供一个全面的学习平台,同时也为经验丰富的开发者提供参考资料。PL/SQL是Oracle特有的...

    pl_sql.zip_fetch_pl/sql_pl_sql_plsql_plsql java

    PL/SQL,全称Procedural Language/Structured Query Language,是Oracle数据库提供的一个结合了SQL语句和过程式编程语言的编程环境。它主要用于管理和控制Oracle数据库,是Oracle数据库开发的核心工具之一。PL/SQL...

    ORACLE8 PLSQL程序设计_sql_code.zip_oracle pl/sql_pl sql code_pl/sql_

    8. **EXAMP**: 06-EXAMP.SQL、10-EXAMP.SQL以及04-LOOP.SQL可能包含各种PL/SQL编程示例,如控制结构(如循环、条件语句)、异常处理和数据类型使用等。 9. **LOOP**: 04-LOOP.SQL专门涉及PL/SQL中的循环结构,包括...

    Oracle PL/SQL实战(待续)

    在Oracle数据库中,PL/SQL提供了丰富的控制结构,如循环、条件判断,以及异常处理机制,使得开发者能够编写复杂的业务逻辑。例如,`IF...THEN...ELSIF...ELSE`语句用于实现条件分支,`WHILE`和`FOR`循环则可以处理...

    oracle_oracle_oraclepl/sql_

    Oracle PL/SQL是一种强大的编程语言,它结合了SQL(结构化查询语言)的数据库操作能力和过程性编程语言的控制结构。在"Oracle PL/SQL"这本书中,作者深入浅出地探讨了这一语言的核心概念和实用技巧,尤其适合法语...

    Oracle PL/SQL程序设计(第5版)(套装上下册)

    《Oracle PL/SQL程序设计(第5版)(套装上下册)》基于Oracle数据库11g,从PL/SQL编程、PL/SQL程序结构、PL/SQL程序数据、PL/SQL中的SQL、PL/SQL应用构建、高级PL/SQL主题这6个方面详细系统地讨论了PL/SQL以及如何...

    oracle 9i pl/sql程序设计笔记

    ### Oracle 9i PL/SQL程序设计笔记精要 #### PL/SQL基础知识概览 **标题与描述**:本文档围绕“Oracle 9i PL/SQL程序设计笔记”这一核心主题,深入探讨了PL/SQL语言的基础知识及其在Oracle 9i数据库环境中的应用。...

    ORACLE PL/SQL从入门到精通

    ORACLE PL/SQL是从入门到精通的专业知识,涵盖了数据库开发与管理的多个方面,包括触发器、过程、函数、软件包、异常处理、游标、循环、分支、变量使用、数据库安装等关键知识点。 触发器是数据库中用来保证数据...

    Oracle_PL-SQL.rar_ORACLE PL_oracle_oracle sql_oracle 教程_pl sql

    3. **异常处理**:Oracle PL/SQL有内置的异常处理机制,通过BEGIN...EXCEPTION部分来捕获和处理运行时错误,增强了程序的健壮性。 4. **游标**:游标是PL/SQL中处理查询结果集的关键工具,允许逐行访问查询结果,...

    Oracle PL/SQL程序设计(第5版)(上下册)

    ### Oracle PL/SQL程序设计(第5版)(上下册)知识点概述 #### 一、PL/SQL编程基础 - **PL/SQL简介**:PL/SQL(Procedural Language for SQL)是Oracle数据库的一种内嵌式过程化语言,用于增强SQL的功能。它允许在SQL...

    pl/sql最新中文手册

    PL/SQL是Oracle数据库系统中的一个关键组成部分,它是一种过程化语言,专为数据库操作设计。这个"PL/SQL最新中文手册"显然是一份详细解释PL/SQL 7.0版本的指南,对于学习和精通Oracle数据库编程至关重要。以下是手册...

    oracle pl/sql从入门到精通 配套源代码

    Oracle PL/SQL是一种强大的编程语言,它结合了SQL(结构化查询语言)的数据库操作功能与PL/SQL的程序设计特性,广泛应用于Oracle数据库的开发和管理。这本书"Oracle PL/SQL从入门到精通"的配套源代码,显然是为了...

    PL/SQL Developer 远程连接Oracle数据库

    PL/SQL Developer是一款专为Oracle数据库设计的集成开发环境,它极大地简化了PL/SQL语言的编写、调试和管理任务。远程连接Oracle数据库是PL/SQL Developer的一项关键功能,允许用户在本地计算机上操作和管理远程...

    一个对数据库的操作工具PL/SQLpl/sqL工具

    PL/SQL是Oracle公司开发的一种过程化语言,全称为Procedural Language/Structured Query Language,它是SQL的一个扩展,专门用于处理Oracle数据库系统。这个“PL/SQL工具”显然是一个用于辅助管理和操作Oracle数据库...

    PL/SQL oracle专用工具

    Oracle PL/SQL oracle专用工具

    pl sql web design.rar_oracle_pl sql_pl/sql_web sql

    1. **Oracle PL/SQL基础**:PL/SQL是Procedural Language/Structured Query Language的缩写,它是Oracle为SQL添加的编程组件,支持流程控制、异常处理和子程序定义。在构建网上商店时,我们可能需要编写存储过程、...

    Oracle PL/SQL 实例精解(第4版涵盖Oracle 11g)+源码脚本

    5. **异常处理**:Oracle PL/SQL提供了丰富的异常处理机制,使得程序能够优雅地处理错误和异常情况,提高代码的健壮性。书中会展示如何使用RAISE、EXCEPTION、WHENEVER等语句来捕获和处理异常。 6. **包**:包是...

    Oracle PL/SQL实例精解 数据库建立代码

    Oracle PL/SQL是一种强大的编程语言,它结合了SQL的数据库操作能力和PL/SQL的结构化编程特性,使得数据库开发者能够创建复杂的应用程序和数据库逻辑。在"Oracle PL/SQL实例精解 数据库建立代码"中,我们将深入探讨...

Global site tag (gtag.js) - Google Analytics