`

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

    PL/Sql_Demo_OraclePL/Sql_Demo_OraclePL/Sql_Demo_Oracle

    oracle10g_pl/sql

    oracle10g 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以及如何...

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

    Oracle8 PL/SQL程序设计中的例子脚本 162K SQL(英文) The example code used in Oracle8 PL/SQL Programming

    PL/SQL oracle专用工具

    Oracle PL/SQL oracle专用工具

    Oracle PL/SQL语言初级教程

    PL/SQL是Oracle对标准数据库语言的扩展,Oracle公司已经将PL/SQL整合到Oracle 服务器和其他工具中了,近几年中更多的开发人员和DBA开始使用PL/SQL,本教程将以循速渐进的方式讲述PL/SQL基础语法,结构和组件、以及...

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

    oracl PL/SQL PPT教程.这很不错

    PL/SQL_x86_x64及相应版本instantclient全绿色版

    32位版PL/SQL需要转发客户端instantclient_11_2 64位版以服务器环境情况而定 62位plsql所在服务器如果未安装Oracle数据库最好用instantclient_12_2转发 安装了Oracle数据库则可直接配置Oracle的动态库文件

    PL/SQL User's Guide and Reference (官方CHM)

    PL/SQL, Oracle's procedural extension of SQL, is an advanced fourth-generation programming language (4GL). It offers modern features such as data encapsulation, overloading, collection types, ...

    精通Oracle 10g SQL和PL/SQL

    sql是关系数据库的基本操作语言 它是应用程序与数据库进行交互操作的接口 pl/sql是oracle特有的编程语言 它不仅具有过程编程语言的基本特征 循环 条件分支等 而且还具有对象编程语言的高级特征 重载 继承等 ...

    Oracle.PL.SQL程序设计_第五版_上册]扫描版

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

    oracle_oracle_oraclepl/sql_

    Book of PL/SQL In fench

    Oracle PL/SQL programming(5th Edition)

    Topics covered: How to use Oracle PL/SQL in all its manifestations through Oracle9i. Fundamentals of program structure (loops, cases, exceptions, etc.) and execution get attention, as do data types, ...

    Oracle PL/SQL实例编程(PL/SQL经典书籍)

    Oracle PL/SQL实例编程 Oracle PL/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程序设计笔记。

    Oracle PL/SQL programming

    Considered the best Oracle PL/SQL programming guide by the Oracle community, this definitive guide is precisely what you need to make the most of Oracle’s powerful procedural language. The sixth ...

    PL/SQL不安装Oracle连接数据库

    PL/SQL不安装Oracle连接数据库 1、下载instantclient-basic-win32-11.2.0.1.0此为压缩包,解压就行(路径如:D:\oracle\instantclient\instantclient).解压的路径自行调整 2、新建tnsnames.ora文件,路径如(D:\...

    DBAtools for PL/SQL表空间管理器

    PL/SQL Developer是Oracle数据库当前最流行的开发工具之一,它在ORACLE数据库开发设计方面功能强大,使用方便,但是数据库管理方面一直比较欠缺。 DBATools For PL/SQL Developer 是一款PL/SQL Developer的辅助插件...

    PL/SQL Developer9.06

    PL/SQL Developer是一个集成开发环境,专门面向Oracle数据库存储程序单元的开发。如今,有越来越多的商业逻辑和应用逻辑转向了Oracle Server,因此,PL/SQL编程也成了整个开发过程的一个重要组成部分。PL/SQL ...

Global site tag (gtag.js) - Google Analytics