CREATE OR REPLACE PROCEDURE ps_uprecord(myDate IN DATE)
                               --myDate 作为入参
  AS
  BEGIN
       UPDATE MONEY_INFO SET total_money=total_money+100,add_date=myDate
       WHERE
       total_flag<>'1';
  END;执行的时候,exec ps_uprecord('你的日期'),格式一定要和数据库的日期格式相同,我觉得add_date 定义为char型好处理.希望对你有所帮助.

解决方案 »

  1.   

    create procedure pro(p_sdate in date,p_edate in date)
    as
    begin
    update MONEY_INFO SET total_money=total_money+100 where add_date between p_sdate and p_edate and total_flag='1';
    end;
    /
      

  2.   

    好的,比如我 有如下两条记录:
    IDCARD    TOTAL_MONEY     ADD_DATE     TOTAL_FLAG           
    001       400             2003-01-01          1
    002                                         0
    003
    向上面的三条记录,遍历处理每一条记录,第一条记录则比较时间是否大于2003-01,如果是一月,则不进行total_money的累加,如果是二月(2003-03),则total_money累加100,为500。如果是3月(2003-03),则累加200,变为600。
    第二条记录,total_flag为0,则不对此条记录处理。
    第三条记录,total_flag为空,也不作处理。如何实现???
      

  3.   

    对于每次更新,我是建了一个job,每个月的1号,15号,调用此过程,更新数据,因为total_money 这个字段每个月要累加100一次。