使用DBMS_JOB包创建删除schema下的job

CREATE OR REPLACE PROCEDURE p_test AS
BEGIN
  NULL;
END p_test;


HR@joydb:~>select text from user_source where name=upper('p_test');

TEXT
-----------------------
procedure p_test as
begin
  null;
end p_test;

HR@joydb:~>select t.OBJECT_NAME,
  2  t.status,
  3  to_char(t.CREATED, 'yyyy-mm-dd hh24:mi:ss') dt
  4  from user_objects t
  5  where t.OBJECT_TYPE = 'PROCEDURE'
  6  and t.OBJECT_NAME = 'P_TEST';

OBJECT_NAME STATUS  DT
----------- ------- -------------------
P_TEST      VALID   2011-12-26 10:32:03

为HR创建一个job,每两分钟执行一次

DECLARE
  JOB PLS_INTEGER;
BEGIN

  SYS.DBMS_JOB.SUBMIT(JOB       => JOB,
                      WHAT      => 'P_TEST;',
                      NEXT_DATE => SYSDATE,
                      INTERVAL  => 'SYSDATE+1/24/30');
  COMMIT;
END;

HR@joydb:~>select t.SCHEMA_USER,t.INTERVAL,t.WHAT from user_jobs t;

SCHEMA_USER INTERVAL           WHAT
----------- ------------------ -------
HR          SYSDATE+1/24/30    P_TEST;

使用PL/SQL删除这个job

DECLARE
  V_COUNT PLS_INTEGER;
  V_JOB   PLS_INTEGER;
BEGIN
  SELECT COUNT(*) INTO V_COUNT FROM USER_JOBS S WHERE S.WHAT = 'P_TEST;';
  IF V_COUNT = 1 THEN
    SELECT S.JOB INTO V_JOB FROM USER_JOBS S WHERE S.WHAT = 'P_TEST;';
    SYS.DBMS_JOB.REMOVE(V_JOB);
    COMMIT;
  END IF;
END;
HR@joydb:~>select t.SCHEMA_USER,t.INTERVAL,t.WHAT from user_jobs t;

no rows selected

也可以写在一起,根据P_TEST判断如果该job存在就删除,否则创建

DECLARE
  JOB     PLS_INTEGER;
  V_COUNT PLS_INTEGER;
  V_JOB   PLS_INTEGER;
BEGIN
  SELECT COUNT(*) INTO V_COUNT FROM USER_JOBS S WHERE S.WHAT = 'P_TEST;';
  IF V_COUNT = 1 THEN
    SELECT S.JOB INTO V_JOB FROM USER_JOBS S WHERE S.WHAT = 'P_TEST;';
    SYS.DBMS_JOB.REMOVE(V_JOB);
    COMMIT;
  END IF;
  SYS.DBMS_JOB.SUBMIT(JOB       => JOB,
                      WHAT      => 'P_TEST;',
                      NEXT_DATE => SYSDATE,
                      INTERVAL  => 'SYSDATE+1/24/30');
  COMMIT;
END;



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值