存储过程A
procedure PROC_A( p_startrq in varchar2,p_endrq in varchar2)
存储过程B
procedure PROC_B(p_year in varchar2,p_month in varchar2)
存储过程C
procedure PROC_C(p_qfrq in varchar2)要是算的日期是本月和上月的
格式如下,例如
procedure PROC_A('2013-04-01','2013-05-31')
procedure PROC_B('2013','04')
procedure PROC_B('2013','05')
procedure PROC_C('201304')
procedure PROC_C('201305')
顺序执行以上五个存储过程
请问怎么才能把这些日期不写死,写成通用的?

解决方案 »

  1.   

    再写一个存储过程procedure PROC_D,在这个存储过程里面调用
    procedure PROC_A('2013-04-01','2013-05-31')
    procedure PROC_B('2013','04')
    procedure PROC_B('2013','05')
    procedure PROC_C('201304')
    procedure PROC_C('201305')参数可以用变量代替,就可以通用了。
      

  2.   

    跟你标题说的 job 有什么关系
      

  3.   

    修改一下 A 也是分开的
    procedure PROC_A('2013-04-01','2013-04-30')
    procedure PROC_A('2013-05-01','2013-05-31')
      

  4.   

    那也没有问题,增加一下就可以了
    procedure PROC_D
    (
      v_time in varchar2 default '20130508'
    )
    as
      v_par_a1 varchar2(20);
      v_par_a2 varchar2(20);
      ...
    begin
      v_par_a1 := to_char(trunc(add_months(to_date(substr(v_time,1,6),'yyyy-mm'),-1)),'yyyy-mm-dd');
      v_par_a2 := to_char(last_day(add_months(to_date(substr(v_time,1,6),'yyyy-mm'),-1)),'yyyy-mm-dd');
      ...
    procedure PROC_A(v_par_a1 ,v_par_a2)--这里的参数全部用变量代替
    procedure PROC_A('2013-05-01','2013-05-31')--剩下的都这样处理就可以了
    procedure PROC_B('2013','04')
    procedure PROC_B('2013','05')
    procedure PROC_C('201304')
    procedure PROC_C('201305')
    end;
      

  5.   

    在你执行这个proc的脚本里面把参数传进去不久可以了。dos,unix都可以