zoukankan      html  css  js  c++  java
  • 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;
  • 相关阅读:
    关于螺旋矩阵的问题
    JDK 1.5 for 循环的新写法
    Java基础视频笔记(三)
    关于接口的理解
    常用的DOS命令
    Java基础视频笔记(二)
    Eclipse的常用快捷键备忘
    Java基础视频笔记(四):泛型
    异常设计准则
    多重继承和虚继承的内存布局(转)
  • 原文地址:https://www.cnblogs.com/chenyanbin/p/12749912.html
Copyright © 2011-2022 走看看