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;