📅  最后修改于: 2023-12-03 14:53:22.181000             🧑  作者: Mango
在 Oracle 数据库中,可以使用作业来执行周期性或者定时性任务。但是,如果在创建作业之前没有对作业进行检查,可能会因为作业已经存在而出现错误。为了避免这种情况,我们可以使用以下 SQL 语句来创建作业:
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'job_name',
job_type => 'PLSQL_BLOCK',
job_action => 'BEGIN ... END;',
start_date => SYSTIMESTAMP,
repeat_interval => 'FREQ=MINUTELY;INTERVAL=15',
enabled => TRUE,
comments => 'job description'
);
EXCEPTION
WHEN OTHERS THEN
IF SQLCODE = -27477 THEN
NULL;
ELSE
RAISE;
END IF;
END;
/
以上 SQL 语句会创建一个作业,并且在作业名称已经存在的情况下,不会再次创建该作业。
其中,CREATE_JOB
子程序用于创建作业,具体参数如下:
job_name
:作业名称。job_type
:作业类型,可以是 PLSQL_BLOCK
、STORED_PROCEDURE
、EXECUTABLE
、CHAIN
或者 REPLICATION_TASK
。job_action
:作业内容,根据类型不同而不同。start_date
:作业开始时间。repeat_interval
:作业重复执行的时间间隔。enabled
:是否开启作业。comments
:作业描述。代码中的异常处理,主要是为了避免在作业名称已经存在的情况下,重复创建作业而导致的错误。当 SQLCODE 为 -27477 时,表示作业名称已经存在,此时不进行任何操作。其他情况下,将会把异常抛出以供捕获处理。
总之,使用以上 SQL 语句,在创建 Oracle 作业的时候可以避免因为作业已经存在而导致的错误。