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;
  • 相关阅读:
    1860 最大数
    1164 统计数字
    1063 合并果子
    1098 均分纸牌
    2806 红与黑
    1168 火柴棒等式
    1910 递归函数
    2774 火烧赤壁
    2017.0705.《计算机组成原理》-存储器
    2017.0704.《计算机组成原理》-动态RAM
  • 原文地址:https://www.cnblogs.com/chenyanbin/p/12749912.html
Copyright © 2011-2022 走看看