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;
  • 相关阅读:
    398. Random Pick Index
    382. Linked List Random Node
    645. Set Mismatch
    174. Dungeon Game
    264. Ugly Number II
    115. Distinct Subsequences
    372. Super Pow
    LeetCode 242 有效的字母异位词
    LeetCode 78 子集
    LeetCode 404 左叶子之和
  • 原文地址:https://www.cnblogs.com/gynbk/p/6556102.html
Copyright © 2011-2022 走看看