Oracle 存储过程 捕获异常

1、带参数插入并带返回值,异常信息

CREATE OR REPLACE PROCEDURE test_pro (v_id in int,v_name in varchar2,app_code out int,error_Msg out varchar) -- in 是输入参数;out 输出参数
IS
BEGIN
        INSERT INTO proc_test (id,name) VALUES (v_id,v_name); --往表中插入一条数据
        app_code:=8;          --执行状态码,8 成功;9失败
        error_Msg:='执行成功'; --执行执行结果
        commit; --提交事务
EXCEPTION
        rollback; --回滚提交的事务
        when others then 
          app_code:=9; --执行状态码,8 成功;9失败
          error_Msg:=SUBSTR(SQLERRM, 1, 200); --返回报错信息
          --存储过程调用失败,往存储过程日志表追加一条记录,方便以后查询;第一个参数:调用存储过程名,第二个参数:错误信息
          INSERT INTO proc_error (proc_name,msg_error) VALUES ('test_pro',error_Msg);
          commit; --重新提交事务,记录日志
END;

调用

--调用存储过程
DECLARE
        app_code number; --声明变量,用于接收状态码
        msg_error varchar(200); --声明变量,用于接收错误信息
BEGIN
        test_pro(2,'222',app_code,msg_error);
        dbms_output.put_line(app_code); --输出状态码
        dbms_output.put_line(msg_error); --输出错误信息
END;
posted @ 2020-04-22 09:38  陈彦斌  阅读(1542)  评论(0编辑  收藏  举报