create or replace procedure test(st in date,et in date,val out number)
begin
  ...
end;
是这个意思么?

解决方案 »

  1.   

    用得着存储过程吗?
    select ceil((date1-date2)*24*60) from tbname;
      

  2.   

    用round函数:函数:取分钟数
    create or replace function GetMinute(StartTime  date,EndTime date)
    begin
      return (round((EndTime-StartTime)/60));
      
    end;过程调用
    create or replace procedure test
      v_StartTime date;
      v_EndTime   date;
      v_分钟数    integer;
    begin
      select StartTime into v_StartTime from .. ;
      select EndTime into v_EndTime from ....;
      v_分钟数 := GetMinute(v_StartTime,v_EndTime);
       ....  
    end;
      

  3.   

    round()是四舍五入,不符合要求。
      

  4.   

    create or replace procedure p(s_time in date,e_time in date,c_time out number)
    as
    begin
      select ceil((e_time-s_time)*24*60) into c_time from dual;
      dbms_output.put_line(to_char(c_time));
      return;
    end;
      

  5.   

    create or replace procedure p
      v_starttime date;
      v_endtime date;
      v_resulttime number;
      v_rowid varchar2(100);
      cursor c_t is select StartTime,EndTime,rowid from tab;
    as
    begin
      open c_t;
      fetch c_t into v_starttime,v_endtime,v_rowid;
      loop
          if c_t%found then
              select ceil((v_starttime-v_endtime)*24*60) into v_resulttime from dual;
              update tab set '列'=v_resulttime where rowid=v_rowid;
              commit;
          end if;
          fetch c_t into v_starttime,v_endtime;
      end loop;
        
    end;