zoukankan      html  css  js  c++  java
  • Oracle存储过程、包的开发

    规范

     1 create or replace procedure_name
     2     (
     3         --参数:argument,根据参数类型命名,如number就是an_...,date就是ad_...
     4         ad_data_date in date,
     5         --使用表名.列名定义参数类型
     6         P_id table.id%type
     7     )
     8     is
     9     --变量:variable,number就是vn_...
    10     begin
    11     --业务处理
    12     commit;
    13     
    14     exception
    15         when others then
    16         ai_code := sqlcode; --oracle自带的函数,返回Oracle错误的序列
    17         ai_desc := substr(sqlerrm,1,1000); --返回错误消息
    18         --错误处理,一般写日志
    19         rollback;
    20     end;
    21 end;

    结合package、计算控制procedure、log_procedure使用

     1 create or replace package body pkg_name is
     2     --procedure_1
     3     prc_log
     4     (
     5         ac_prc_name in varchar2, --过程名
     6         ad_bgn_date in date,    --开始时间
     7         ad_end_date in date,    --结束时间
     8         ac_res_code in varchar2, --结果代码
     9         ac_res_desc in varchar2, --结果描述
    10         ac_remark in varchar2   --备注
    11     )
    12     is
    13     begin
    14     insert into log_table(columns) values (...);
    15     commit;
    16     
    17     exception
    18         when others then
    19         rollback;
    20     end;
    21     
    22     --procedure_2
    23     prc_name
    24     (   --参数
    25         an_data_date in number, --数据时间
    26         an_code out number, --执行结果代码
    27         av_desc out varchar2 --执行结果描述
    28     ) is
    29     --变量
    30     vd_bgn_date date;
    31     vd_end_date date;
    32     begin
    33     vd_bgn_date := sysdate;
    34     --业务处理
    35     
    36     an_code := 0;
    37     av_desc := '执行成功';
    38     select sysdate into vd_end_date from dual;
    39     
    40     --写日志
    41     prc_log(prc_name,vd_bgn_date,vd_end_date,an_code,av_desc,'备注');
    42     commit;
    43     
    44     exception
    45         when others then
    46         --sqlcode
    47         an_code := sqlcode;
    48         --sqlerrm
    49         av_desc := substr(sqlerrm,1,1000);
    50         vd_end_date := sysdate;
    51         rollback;
    52         --写日志
    53         prc_log(prc_name,vd_bgn_date,vd_end_date,an_code,av_desc,'备注');
    54         commit;
    55     end;
    56     
    57     --计算控制
    58     procedure prc_ctl
    59     (
    60     ad_date in date,
    61     an_code out number,
    62     av_desc out varchar2
    63     )
    64     is
    65     --变量
    66     vd_data_date varchar2; --数据时间,执行的条件
    67     vd_bgn_date date;
    68     vd_end_date date;
    69     begin
    70     vd_bgn_date := sysdate;
    71     if ... then
    72     --业务处理,调用存储过程
    73     prc_name(vd_data_date);
    74     else ...
    75     end if;
    76     
    77     an_code := 0;
    78     av_desc := '执行成功';
    79     vd_end_date := sysdate;
    80     
    81     --log
    82     prc_log('prc_ctl',vd_bgn_date,vd_end_date,an_code,av_desc,'备注');
    83     commit;
    84     
    85     exception
    86         when others then
    87         an_code := sqlcode;
    88         av_desc := substr(sqlerrm,1,1000);
    89         vd_end_date := sysdate;
    90         rollback;
    91         --log
    92         prc_log('prc_ctl',vd_bgn_date,vd_end_date,an_code,av_desc,'备注');
    93         commit;
    94     end;
    95 end;
  • 相关阅读:
    数组中的逆序对★★
    把数组排成最小的数★★★
    丑数★★★
    整数中1出现的次数(从1到n整数中1出现的次数)
    连续子数组的最大和
    每两个字符串中插入字符串
    linux R环境安装以及注意事项
    JAVA调用R脚本 windwos路径下
    springboot 配置多数据源
    springboot 在配置文件写参数注入到类中
  • 原文地址:https://www.cnblogs.com/cnblogs-syui/p/12511120.html
Copyright © 2011-2022 走看看