zoukankan      html  css  js  c++  java
  • oracle存储过程异常捕获

    oracle存储过程异常捕获学习,执行及演示过程:

    存储过程:

        CREATE OR REPLACE PROCEDURE sp_test_2  
        (  
           param1 in int,     --输入参数  
           param2 in int,      
           out_return out varchar2 --返回结果  
        )  
        is  
           --全局变量  
           val int;   
           errorException exception; --申明异常  
           errorCode number; --异常代号  
           errorMsg varchar2(1000); --异常信息  
           flag varchar2(10);  
        begin  
             flag := 'true';  
             out_return := 'flag=' || flag || ',errorCode=' || errorCode || ',errorMsg=' || errorMsg;  
             val := param1/param2;  
             --/*  
             exception  
                 when errorException then  
                      errorCode := SQLCODE;  
                      errorMsg := SUBSTR(SQLERRM, 1, 200);   
                      flag := 'false';  
                      out_return := 'flag=' || flag || ',errorCode=' || errorCode || ',errorMsg=' || errorMsg;  
                 when others then  
                       errorCode := SQLCODE;      
                       errorMsg := SUBSTR(SQLERRM, 1, 200);   
                       flag := 'false';  
                       out_return := 'flag=' || flag || ',errorCode=' || errorCode || ',errorMsg=' || errorMsg;  
             --dbms_output.put_line(errorCode || ',' || errorMsg);   
             --*/  
        end sp_test_2;  

    演示存储过程:

        DECLARE   
           out_return varchar2(1000);  
           val int; --全局变量  
           errorException exception; --申明异常  
           errorCode number; --异常编码  
           errorMsg varchar2(1000); --异常信息  
           flag varchar2(10);  
        begin  
             flag := 'true';  
             out_return := 'flag=' || flag || ',errorCode=' || errorCode || ',errorMsg=' || errorMsg;  
             val := 1/0;  
             exception  --异常捕捉,不要把有需要的代码放在异常捕捉后面,有异常才会执行异常代码下所有代码,没有异常不会执行  
                 when errorException then  
                      errorCode := SQLCODE;  
                      errorMsg := SUBSTR(SQLERRM, 1, 200);   
                      flag := 'false';  
                      out_return := 'flag=' || flag || ',errorCode=' || errorCode || ',errorMsg=' || errorMsg;  
                 when others then  
                       errorCode := SQLCODE;      
                       errorMsg := SUBSTR(SQLERRM, 1, 200);   
                       flag := 'false';  
                       out_return := 'flag=' || flag || ',errorCode=' || errorCode || ',errorMsg=' || errorMsg;  
               
             dbms_output.put_line(out_return);       
        end;  

    sqlplus中执行存储过程:

        DECLARE   
             out_return varchar2(1000);  
        begin  
             sp_test_2(1,0,out_return);  
             dbms_output.put_line(out_return); --打印结果  
        end;  

    执行存储过程 1除以0 结果:

  • 相关阅读:
    学习java的第二天
    第一天学习JAVA
    java小知识字符串,比较object,equalsIgnoreCase()拼接concat /截取substring
    java小知识api Scanner Random ArrayList
    java小知识对象
    java小知识数组
    java小知识方法
    java基础知识循环语句
    java小知识语句
    java基础小知识
  • 原文地址:https://www.cnblogs.com/xwb583312435/p/9055963.html
Copyright © 2011-2022 走看看