oracle 简单的存储过程

 oracle 中创建存储过程包括包和包体,包中可以定义全局变量以及过程名字及参数;

包(package):

create or replace package REP_GSCF is

  -- Author  : XSJ
  -- Created : 2011-10-25 15:01:16
  -- Purpose : 
  
  -- Public type declarations
  --type <TypeName> is <Datatype>;
  vsql varchar2(4000);
  -- Public constant declarations
  --<ConstantName> constant <Datatype> := <Value>;

  -- Public variable declarations
  --<VariableName> <Datatype>;

  -- Public function and procedure declarations
  --function <FunctionName>(<Parameter> <Datatype>) return <Datatype>;
  procedure repReminderFeeNotice(
      dayBeginVal_i in varchar2,		--催费天数起始
      dayEndVal_i in varchar2,		--催费天数结束
      readTypeVal_i in varchar2,		--抄表类型
      readVal_i in varchar2,		         --抄表类型值
      rslt_o out varchar2,        	         --字符串结果
      rs_o out together.T_cursor  	         --数据集(单独定义包中的 游标返回形式)
  );
  
   procedure generateData(
      GENDATE_I in varchar2,                  --生成日期 字符 非空 YYYY-MM-DD格式 
      oweDays_I in varchar2,                   --欠费天数 数字 非空 
      RESULT_O out varchar2                    --字符串结果
  );
  
end REP_GSCF;

包体(package body):

create or replace
package body REP_GSCF is

  procedure repReminderFeeNotice(
      dayBeginVal_i in varchar2,		--催费天数起始
      dayEndVal_i in varchar2,		--催费天数结束
      readTypeVal_i in varchar2,		--抄表类型
      readVal_i in varchar2,		         --抄表类型值
      rslt_o out varchar2,        	         --字符串结果
      rs_o out together.T_cursor  	         --数据集
  ) is
  
  --定义变量
  vs_param1 VARCHAR2(10);           --催费天数起始
  vs_param2 VARCHAR2(10);           --催费天数结束
  vs_param3 CHAR(1);                --抄表类型
  vs_param4 VARCHAR2(1000);         --抄表类型值

  --定义游标(一个可以遍历的结果集)
  cursor get_list is select to_char(sysdate,'yyyymmdd')||'-'||bookno||'-'||to_char(bookorder) ord,custname,billmonth,ltrim(to_char(fee,'99999990.00'),' ') fee,to_char(deadline,'yyyy-mm-dd') ddline from cms_bill where ispaid = '00' and custName = '南京二楼湾商务咨询有限公司';

  begin
       --用输入参数给变量赋初值
        vs_param1 := dayBeginVal_i;        
       vs_param2 := dayEndVal_i;       
       vs_param3 := readTypeVal_i;  
       vs_param4 := readVal_i;
       
       DBMS_OUTPUT.put_line('===='||vs_param1);
       DBMS_OUTPUT.put_line('===='||vs_param2);
       DBMS_OUTPUT.put_line('===='||vs_param3);
       DBMS_OUTPUT.put_line('===='||vs_param4);

       open get_list;
       close get_list;
       vsql:='select to_char(sysdate,''yyyymmdd'')||''-''||bookno||''-''||to_char(bookorder) ord,custname,billmonth,ltrim(to_char(fee,''99999990.00''),'' '') fee,to_char(deadline,''yyyy-mm-dd'') ddline from cms_bill where ispaid = ''00''';
       together.get_rs(vsql,rs_o);
       rslt_o:='success';
       COMMIT;
   EXCEPTION
       WHEN OTHERS THEN
       ROLLBACK;
       vsql:='select to_char(sysdate,''yyyymmdd'')||''-''||bookno||''-''||to_char(bookorder) ord,custname,billmonth,ltrim(to_char(fee,''99999990.00''),'' '') fee,to_char(deadline,''yyyy-mm-dd'') ddline from cms_bill where ispaid = ''00''';
       together.get_rs(vsql,rs_o);
       rslt_o:='failure';
  end;
  
  procedure generateData(
      GENDATE_I in varchar2,        --生成日期 字符 非空 YYYY-MM-DD格式 
      oweDays_I in varchar2,        --欠费天数 数字 非空 
      RESULT_O out varchar2         --字符串结果
  )is
  --定义变量
  GENDATE VARCHAR2(10);             --生成日期
  days number(3,0);                 --天数

  begin
       -- --用输入参数给变量赋初值
       GENDATE := GENDATE_I;        
       days := oweDays_I;       
       
       DBMS_OUTPUT.put_line('===='||GENDATE);
       DBMS_OUTPUT.put_line('===='||days);

       --open get_list;
       --close get_list;
       --vsql:='select to_char(sysdate,''yyyymmdd'')||''-''||bookno||''-''||to_char(bookorder) ord,custname,billmonth,ltrim(to_char(fee,''99999990.00''),'' '') fee,to_char(deadline,''yyyy-mm-dd'') ddline from cms_bill where ispaid = ''00''';
       --together.get_rs(vsql,rs_o);
       RESULT_O:='success';
       COMMIT;
   EXCEPTION
       WHEN OTHERS THEN
       ROLLBACK;
       --vsql:='select to_char(sysdate,''yyyymmdd'')||''-''||bookno||''-''||to_char(bookorder) ord,custname,billmonth,ltrim(to_char(fee,''99999990.00''),'' '') fee,to_char(deadline,''yyyy-mm-dd'') ddline from cms_bill where ispaid = ''00''';
       --together.get_rs(vsql,rs_o);
       RESULT_O:='failure';
  end;

end REP_GSCF;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值