每周六凌晨02:00系统自动检查订单数据,如果发现有超过6个月没有下单的客户,则自动添加一条客户流失预警记录。在struts1.x+hibernate+spring整合项目中,使用oracle9i数据库。要如何实现它呢?求助各位高手了!急~~~~~~~感激不尽 !!!!!!1

解决方案 »

  1.   

    用oracle的定时器,调用存储过程,在存储过程中判断时间超过6个月的客户就在客户流失表中插入一条记录。
      

  2.   

    更正一下,最好用spring的定时器。不用oracle的。
      

  3.   

    linux下写一个shell,定时调用你的procedure存储过程,在procedure里面处理你的逻辑
      

  4.   

    -- 系统参数
    Alter system set job_queue_processes=1000;
    ALTER SYSTEM DISABLE RESTRICTED SESSION;
    ALTER SYSTEM SET JOB_QUEUE_PROCESSES = 1000;-- 创建表
    create table TEST(executetime date);
      
    --创建存储过程
    create or replace procedure MYPROC as
     cursor c_one  is select * from crmadmin.orders  where odr_date>'(sysdate+6*30*24*60*60)';
    begin
    for v_cr in c_one loop
               insert into crmadmin.cst_lost(lst_cust_name,lst_last_order_date,lst_status) values(v_cr.odr_customer,v_cr.odr_date,'警告');
            end loop;
          commit;
    end;
    /
      
    --创建job
    variable job1 number;
    begin
    dbms_job.submit(:job1,'MYPROC;',sysdate,'(next_day(sysdate,7))+2/24');
    end;
    /
      
    --执行job
    begin
    dbms_job.run(:job1);
    end;
    /
      
    --移除job
    begin
    dbms_job.remove(:job1);
    end;
    /  
      

  5.   

    <bean id="methodInvokingJobDetail"
      class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <property name="targetObject"><ref bean="方法bean"/></property>
        <property name="targetMethod"><value>方法名称</value></property>
    </bean> <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
      <property name="jobDetail">
        <ref bean="methodInvokingJobDetail"/>
      </property>
      <property name="cronExpression">     <value>0 02 * * * ?</value>
      </property>
    </bean>