• 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;
  • 相关阅读:
    PHP_Code_challenge(代码审计)
    超全局变量$GLOBALS
    upload-labs(文件上传)
    CTF bugku 论剑场 web20
    多次Printf()是否使用用同一栈帧的参数?
    (转载于度盘)小迪安全渗透-学习讲义
    SQL数据库操作练习(2)
    .htaccess绕过
    PHP序列化思考(9.14已修改)
    SQL数据库操作练习(1)
  • 原文地址:https://www.cnblogs.com/gynbk/p/6556102.html
Copyright © 2020-2023  润新知