--存储过程,根据输入的日期,返回该日期所在的月份后两个月的第一个周日create or replace Procedure PReDate(pi_Date    in out varchar2,
                                    pi_Result  out integer,
                                    ps_Message out varchar2) is
begin
  pi_Result  := -1;
  ps_Message := '初始化失败';
  ps_Message := '开始计算日期';
  select to_char(next_day(last_day(add_months
  (to_date(pi_date,'YYYY-MM-DD'),1)), '星期日'),'YYYY-MM-DD'))from dual;
  pi_result  := 1;
  ps_message := '成功';
--异常处理
  exception
  when others then
    begin
      pi_result  := -1;
      ps_message := '系统出错!';
    end;
end PReDate;
编译总是失败,不知道什么错误,求高人指点!多谢啦!

解决方案 »

  1.   


    1、缺少into部分
    2、多了一个 ) 括号
      

  2.   


    CREATE OR REPLACE Procedure PReDate(pi_Date    in out varchar2,
                                        pi_Result  out integer,
                                        ps_Message out varchar2) is
    begin
      pi_Result  := -1;
      ps_Message := '初始化失败';
      ps_Message := '开始计算日期';
      select to_char(next_day(last_day(add_months
      (to_date(pi_date,'YYYY-MM-DD'),1)), '星期日'),'YYYY-MM-DD') into pi_Result  from dual;-------------这里问题
      pi_result  := 1;
      ps_message := '成功';
    --异常处理
      exception
      when others then
        begin
          pi_result  := -1;
          ps_message := '系统出错!';
        end;
    end PReDate;