Oracle定时器调用存储过程

Oracle定时器调用存储过程

1、创建存储过程

--创建协同提示存储过程
CREATE OR REPLACE PROCEDURE P_DC_WORK_COOPERATION_WARNING IS
       V_sql VARCHAR2(1000);
BEGIN
       -- 1、删除数据
       V_sql:='DELETE FROM DC_WORK_COOPERATION_WARNING T
               WHERE T.NAME = ''工单处理''
               AND T.USER_ID IN (SELECT RU.USER_ID --用户编码
                                     FROM DC_SYS_MENU      M,--菜单表
                                          DC_SYS_ROLE_MENU RM,--角色与菜单关系表 
                                          DC_SYS_ROLE_USER RU --用户与角色关系表
                                    WHERE M.MENU_ID = RM.MENU_ID
                                      AND RM.ROLE_ID = RU.ROLE_ID
                                      AND M.MENU_NAME = ''工单处理'')';
        EXECUTE IMMEDIATE V_sql ;
        COMMIT;
        
        -- 2、插入数据
        INSERT INTO DC_WORK_COOPERATION_WARNING
          (COOPERATION_ID,--协同编码
           NAME,--协同名称
           CONTENT,--协同内容
           STATUS,--状态(协同默认未读编码“01”)
           URL,--URL地址
           USER_ID,--用户编码
           CREATE_TIME --创建时间
           )
          SELECT SEQ_COOPERATION_WARNING.NEXTVAL AS COOPERATION_ID,--协同编码
                 NAME,--协同名称
                 CONTENT,--协同内容
                 STATUS,--状态(协同默认未读编码“01”)
                 URL,--URL地址
                 USER_ID,--用户编码
                 CREATE_TIME --创建时间
            FROM (SELECT '工单处理' AS NAME,--协同名称
                         '有工单未处理,请及时处理!' AS CONTENT,--协同内容
                         '01' AS STATUS,--状态(协同默认未读编码“01”)
                         'http://localhost:7001/web/login.jsp' AS URL,--URL地址
                         RU.USER_ID,--用户编码
                         SYSDATE AS CREATE_TIME --创建时间
                    FROM DC_SYS_MENU      M,--菜单表
                         DC_SYS_ROLE_MENU RM,--角色与菜单关系表 
                         DC_SYS_ROLE_USER RU --用户与角色关系表
                   WHERE M.MENU_ID = RM.MENU_ID
                     AND RM.ROLE_ID = RU.ROLE_ID
                     AND M.MENU_NAME = '工单处理');
        COMMIT;
END P_DC_WORK_COOPERATION_WARNING;
/

2、定义定时器

--删除定时器
BEGIN
  FOR V IN(SELECT JOB FROM USER_JOBS WHERE WHAT LIKE '%P_DC_WORK_COOPERATION_WARNING;%') LOOP
    DBMS_JOB.REMOVE(V.JOB);
  END LOOP;
  COMMIT;
END;
/
--定义定时器
DECLARE JOB_SYN_DATAS NUMBER;
BEGIN
  SYS.DBMS_JOB.SUBMIT(JOB => JOB_SYN_DATAS,WHAT => 'P_DC_WORK_COOPERATION_WARNING;',NEXT_DATE => SYSDATE,INTERVAL => 'TRUNC(sysdate) + 1 + 6 / (24)');
  COMMIT;
END;
/

相关文章

数据库版本:11.2.0.4 RAC(1)问题现象从EM里面可以看到,在23号早上8:45~8:55时,数据库等待会话暴增...
(一)问题背景最近在对一个大约200万行数据的表查看执行计划时,发现存在异常,理论上应该返回100多万...
(一)删除备份--DELETE命令用于删除RMAN备份记录及相应的物理文件。当使用RMAN执行备份操作时,会在RM...
(1)DRA介绍 数据恢复顾问(Data Recovery Advise)是一个诊断和修复数据库的工具,DRA能够修复数据文...
RMAN(Recovery Manager)是Oracle恢复管理器的简称,是集数据库备份(backup)、修复(restore)和恢复...
(1)备份对象 可以使用RMAN进行的备份对象如下: --整个数据库:备份所有的数据文件和控制文件; --数...