📜  如果不存在,oracle 创建作业 - SQL (1)

📅  最后修改于: 2023-12-03 14:53:22.181000             🧑  作者: Mango

如果不存在,Oracle 创建作业 - SQL

在 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_BLOCKSTORED_PROCEDUREEXECUTABLECHAIN 或者 REPLICATION_TASK
  • job_action:作业内容,根据类型不同而不同。
  • start_date:作业开始时间。
  • repeat_interval:作业重复执行的时间间隔。
  • enabled:是否开启作业。
  • comments:作业描述。

代码中的异常处理,主要是为了避免在作业名称已经存在的情况下,重复创建作业而导致的错误。当 SQLCODE 为 -27477 时,表示作业名称已经存在,此时不进行任何操作。其他情况下,将会把异常抛出以供捕获处理。

总之,使用以上 SQL 语句,在创建 Oracle 作业的时候可以避免因为作业已经存在而导致的错误。