PLSQL存储过程定时作业(DBMS_JOB)

格式:

– 包中的存储过程DBMS_JOB.SUBMIT,参数如下

DBMS_JOB.SUBMIT(
   JOB OUT BINARY_INTERGER,                          -- 用于指定作业编号
   WHAT IN VARCHAR2,                                 -- 用于指定作业要执行的操作
   NEXT_DATE IN DATE DEFAULT SYSDATE,                -- 用于指定该操作的下一次运行的日期
   INTERVAL IN VARCHAR2 DEFAULT 'NULL',              -- 用于指定该操作的时间间隔
   NO_PARSE IN BOOLEAN DEFAULT FALSE,                -- 用于指定是否需要解析与作业相关的过程
   INSTANCE IN BINARY_INTEGER DEFAULT ANY_INSTANCE,  -- 用于指定哪个例程可以运行作业?
   FORCE IN BOOLEAN DEFAULT FALSE                    -- 用于指定是否强制运行与作业相关的例程
   )

–运行

DBMS_JOB.RUN(JOBNO);--作业编号

–删除

DBMS_JOB.ROMOVE(JOBNO);	--作业编号

DEMO:

CREATE TABLE TEST_JOB(
ID1 NUMBER,
NAME1 VARCHAR2(30),
CT_DT DATE
);
--如果序列存在就删除,然后创建一个序列
CREATE SEQUENCE TEST_JOB_ID_SEQ;
--创建一个序列,每一次向表中插入一条数据,并且表中的ID字段值使用序列指定
CREATE OR REPLACE PROCEDURE SP_INSERT_JOB IS
BEGIN
INSERT INTO TEST_JOB
VALUES
  (TEST_JOB_ID_SEQ.NEXTVAL, 'TEST' || TEST_JOB_ID_SEQ.CURRVAL,SYSDATE);
COMMIT;
END;
 
DECLARE
  V_JOBNO NUMBER;
BEGIN
--提交,操作的时间间隔设置为5秒(default参数可以不用传入)
  DBMS_JOB.SUBMIT(JOB=>V_JOBNO,
				  WHAT=>'SP_INSERT_JOB;', -- 'SP_INSERT_JOB;' 分号不能少 调用存储过程INSERT_JOB
				  NEXT_DATE=>SYSDATE,
				  INTERVAL=>'SYSDATE+1/(24*60*12)');  
--打印序列号
  DBMS_OUTPUT.PUT_LINE('JOBNO='||V_JOBNO);
--运行
  DBMS_JOB.RUN(V_JOBNO);
END;
 
-- 删除
BEGIN
DBMS_JOB.REMOVE(JOBNO);  -- JOBNO为具体数字
END; 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值