zoukankan      html  css  js  c++  java
  • Oracle的PL_SQL的异常处理

    --什么是异常
    --异常是在PL/SQL运行过程中有可能出现的错误。
    
    --执行异常的语句
    exception
      when [异常] when
        --异常输出信息。
    
    --Oracle的预定义异常
    CASE_NOT_FOUND  ora-06592 
    --case语句中,when子句没有匹配的条件,而且没有else语句,会触发该异常。
    NO_DATA_FOUND ORA-01403 
    --select..into语句没有返回记录,触发该异常
    TOO_MANY_ROWS ORA-01422
    --select..into语句返回记录多于一条,触发该异常
    DUP_VAL_ON_INDEX ORA-00001
    --表中唯一索引所对应的列上出现重复值时,引发该异常
    VALUE_ERROR ORA-06502
    --赋值时,如果变量长度不够,引发该异常
    ZERO_DIVIDE ORA-01476
    --除数为零时引发的异常
    STORAGE_ERROR ORA-06500
    --内容溢出或破坏引发该异常
    TIMEOUT_ON_RESOURCE ORA-00051
    --等待资源超时引发该异常
    CURSOR_ALREADY_OPEN ORA-06511
    --打开一个已经打开的游标引发该异常
    
    
    
    
    
    --非预定义异常
    1、声明一个异常的名称。
    2、把这个异常名称和异常的编号相关联。
    --实例
    declare
    v_t varchar2(5);
    v_tt varchar2(3);
    tt_8899_exp exception;--声明异常
    pragma exception_init(tt_8899_exp,-8899);--exception_init(异常名称,异常代码)
    
    begin
    v_t:='1111';
    
    case v_t 
      when '222' then 
        dbms_output.put_line('555');
        end case;
    
    exception
      when CASE_NOT_FOUND then
        dbms_output.put_line('字符串超标');
        dbms_output.put_line(SQLERRM);--输出异常信息
        dbms_output.put_line(SQLCODE);--输出异常的代码
     rollback;   
        end;
    
    
    --自定义异常
    declare
    v_t number(10);
    
    tt_8899_exp exception;--声明异常
    pragma exception_init(tt_8899_exp,-8899);--exception_init(异常名称,异常代码)
    
    begin
           v_t:=-1;  
           if v_t<0 then
             raise tt_8899_exp;--启动自定义异常tt_8899_exp
             end if;
    
    exception
      when CASE_NOT_FOUND then
        dbms_output.put_line(SQLERRM);--输出异常信息
        dbms_output.put_line(SQLCODE);--输出异常的代码
        when  tt_8899_exp then   
          dbms_output.put_line('字符串超标');
          dbms_output.put_line(SQLERRM);--输出异常信息
        dbms_output.put_line(SQLCODE);--输出异常的代码
     rollback;   
        end;
  • 相关阅读:
    ffmpeg mp4 视频输出为 aac 的命令
    git操作远程分支
    Linux (openSUSE 15.3 ) server ssh 可以使用,sftp无法使用
    小小思考题
    Linux 命令介绍
    2021 年 如何使用VMware 安装 ubuntu 7.04 虚拟机, 配置 apt 源
    Linux 下 命令行 使用浏览器
    oracle.cmd
    Sqlcmd
    vue eslint 配置使用
  • 原文地址:https://www.cnblogs.com/gynbk/p/6556102.html
Copyright © 2011-2022 走看看