oracle存储过程异常捕获
Posted 薛文博
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 结果:
以上是关于oracle存储过程异常捕获的主要内容,如果未能解决你的问题,请参考以下文章