语法格式:
- 创建存储过程
CREATE [OR REPLACE] PROCEDURE 过程名[(参数1 [IN|OUT|IN OUT] 数据类型,
参数2 [IN|OUT|IN OUT] 数据类型……)]
IS|AS
PL/SQL过程体;
- 调用存储过程,执行过程中的命令
BEGIN
过程名[(参数)];
END;
设置存储过程定时作业(DBMS_JOB)
该过程用于建立一个新的作业,当建立作业的时候,需要通过设置相应的参数来告诉Oracle要执行的内容,
要执行的时间,要执行任务的间隔。如下格式:
– 包中的存储过程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 -- 用于指定是否强制运行与作业相关的例程
)
执行和停止定时任务的DEMO
DECLARE
V_JOBNO NUMBER;
BEGIN
--提交,操作的时间间隔设置为5秒(default参数可以不用传入)
DBMS_JOB.SUBMIT(JOB=>V_JOBNO, --序列号
WHAT=> , --调用存储过程(分号不能少"xxxxxxx;")
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;