• 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 结果:

  • 相关阅读:
    python字符串操作
    python学习【一】基础入门
    markdown 编辑器
    jenkins学习笔记-安装
    算法
    python 修改文件内容
    python基础,python第四课
    python基础,python第三课
    python基础,python第二课
    python基础,python第一课
  • 原文地址:https://www.cnblogs.com/xwb583312435/p/9055963.html
Copyright © 2020-2023  润新知