切换到宽版
  • 3679阅读
  • 0回复

HAMS档案管理系统中证照档案到期提醒的实现 [复制链接]

上一主题 下一主题
离线猫仙
 

只看楼主 倒序阅读 使用道具 楼主  发表于: 2015-05-22
社保行业,房地产行业、设计单位等都有很多证件档案需要管理,这些证件需要在到期前1个月或者更早提醒档案管理员进行证照的续期:
以下是档案管理系统中的,实现步骤:
1、确定需要提醒的档案数字所在的数据库表 ,例如D_FILE1
2、根据实际情况修改如下存储过程:

作用:自动根据某个日期字段的值对比当前日期进行某些批量数据操作
CREATE OR REPLACE  PROCEDURE "HAMS"."DUETOREMIND"  AS
   v_ename varchar2(200);
   usercodevar varchar2(200);
   llcount  number;
   ll_duenum  number;
   lldid number;
   v_duenumname varchar2(200);
   BEGIN  
  declare  CURSOR mycur is
    SELECT f14 ,count(*) as "llnum"
    FROM D_FILE1
    WHERE F5 <= sysdate and (F5 is not null) group by f14;
begin
   open mycur();
   fetch mycur into v_ename,ll_duenum;
   while (mycur%found)
   loop
   select count(*) into llcount from   S_USER WHERE USERNAME=v_ename;
   if (llcount >0) then
    select USERCODE  INTO usercodevar from S_USER WHERE USERNAME=v_ename ;
    else
      usercodevar:=v_ename;
    end if;
    lldid:=1;
    select max(did) into lldid from s_backlog;
    if ( lldid is null) then
    lldid:=1;
    else
    lldid:=lldid +1;
    end if ;

    insert into S_BACKLOG(DID,URGENCY,PTABLE,OPERMODULEZH,OPERTYPE,OPERDATE,USERCODE,ISOPER,TITLE,OPERMODULEOWNER)values(
                         lldid,0,'D_FILE1','档案管理',3,sysdate,usercodevar,0,'您有'||  ll_duenum ||  '个项目的证照档案已经过期,请单击进入该模块进行处理!','lyh');
    commit;
    fetch   mycur into v_ename, ll_duenum;
    end loop;
      close mycur;
    end;
    end;
3、把存储过程加入数据库的定时执行,执行如下代码:

     variable job1 number;
begin

dbms_job.submit(:job1,'testproc;',sysdate,'sysdate+1/1440');  
  end;


begin
dbms_job.run(:job1);
  end;

dbms_job.remove(:job1);

dbms_job.submit(:test_job,'test_procedure;',sysdate,'sysdate+1’);第四个参数说明:sysdate+1                     表示每天执行一次                             sysdate+1/24                表示每小时执行一次                             sysdate+1/(24*60)         表示每分钟执行一次                             sysdate+1/(24*60*60)   表示每秒执行一次3      
4、通常情况下执行完第三步即可,当然,如果有问题,请往下看:
“并非所有变量都已关联”的解决办法SQL> begin2       dbms_job.interval(:job_clearexpiredata, 'sysdata+1');3 end;4 /begin        dbms_job.interval(:job_clearexpiredata, 'sysdata+1');end;

快速回复
限100 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
上一个 下一个