我的表中有一个过期时间的字段.past_time ,我想在这个时间小于现在时间的时候,让它更改另外一个表中的status字段..
   他们的公共字段是user_id.网高手解答....在线等..

解决方案 »

  1.   

    写个检测过期字段并插入的存储过程,建立一个job定期来执行之...
      

  2.   

    加入ORACLE的群吧;群号是:19312711
      

  3.   

    存储过程当然不会自动运行,是要靠job来运行
    以下的过程和job我没测试过,你看是不是你要的东东--存储过程如下
    create procedure p_csdn_test
    as
      v_num      number(6);
      v_date     date;
      v_status   varchar2(10);
    begin
      v_status := '测试';
      v_date := sysdate;
      select count(*) into v_num
        from test1
       where past_time < v_date;
       
      if v_num = 0 then
         return;
      end if;
      
      update test2
         set status = v_status
       where exists
             (
               select 1
                 from test1
                where user_id = test2.user_id
             );
      commit;
    exception
      when others then
           rollback;
    end;--job如下
    begin
      sys.dbms_job.submit(job => :job,
                          what => 'p_csdn_test;',
                          next_date => to_date('07-06-2007 14:00:00', 'dd-mm-yyyy hh24:mi:ss'),
                          interval => 'SYSDATE+1/144');
      commit;
    end;
    /
      

  4.   

    wangshi013(往事) 谢谢这位朋友...我研究研究..