DBMS_SCHEDULER.CREATE_JOB详细用法
时间: 2023-08-01 16:10:53 浏览: 182
Oracle jobs(DBMS_JOB and DBMS_SCHEDULER)
DBMS_SCHEDULER.CREATE_JOB过程是用于创建作业的一个子程序。它可以创建多种类型的作业,如单次作业、循环作业、链式作业等。下面是DBMS_SCHEDULER.CREATE_JOB的详细用法:
语法:
```
DBMS_SCHEDULER.CREATE_JOB (
job_name IN VARCHAR2,
job_type IN VARCHAR2,
job_action IN VARCHAR2,
number_of_arguments IN PLS_INTEGER DEFAULT 0,
start_date IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
repeat_interval IN VARCHAR2 DEFAULT NULL,
end_date IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
job_class IN VARCHAR2 DEFAULT 'DEFAULT_JOB_CLASS',
enabled IN BOOLEAN DEFAULT TRUE,
auto_drop IN BOOLEAN DEFAULT FALSE,
comments IN VARCHAR2 DEFAULT NULL,
credential_name IN VARCHAR2 DEFAULT NULL,
destination_name IN VARCHAR2 DEFAULT NULL,
job_style IN VARCHAR2 DEFAULT 'REGULAR',
restartable IN BOOLEAN DEFAULT FALSE);
```
参数说明:
- job_name:作业名称,必填项。
- job_type:作业类型,可选值为'PLSQL_BLOCK'、'STORED_PROCEDURE'、'EXECUTABLE'、'CHAIN'、'SQL_SCRIPT'、'BACKUP_SCRIPT'、'COPY_SCRIPT'、'DELETE_FILES'、'EXTERNAL_SCRIPT'、'IN_MEMORY_SCRIPT'、'MANAGE_FILES'、'MOVE_FILES'、'RESTORE_SCRIPT'、'UPDATE_INDEXES'、'UPDATE_STATISTICS',必填项。
- job_action:作业所执行的动作,必填项。根据不同的作业类型,job_action的值也有所不同。如对于PLSQL_BLOCK类型的作业,job_action可以是一个PL/SQL代码块;对于EXECUTABLE类型的作业,job_action可以是一个可执行文件的路径;对于CHAIN类型的作业,job_action可以是一个链名称等。
- number_of_arguments:作业所需的参数个数,默认为0。
- start_date:作业的开始时间,可以是一个时间戳或一个时间字符串,默认为NULL。
- repeat_interval:作业的重复间隔,可以是一个时间字符串或时间间隔表达式,默认为NULL。
- end_date:作业的结束时间,可以是一个时间戳或一个时间字符串,默认为NULL。
- job_class:作业所属的作业类别,必须是先前用DBMS_SCHEDULER.CREATE_JOB_CLASS创建的类别之一。默认为'DEFAULT_JOB_CLASS'。
- enabled:作业是否启用,可选值为TRUE或FALSE,默认为TRUE。
- auto_drop:作业是否自动删除,可选值为TRUE或FALSE,默认为FALSE。
- comments:作业的注释,可选。
- credential_name:作业所使用的凭证名称,可选。
- destination_name:作业所使用的目标名称,可选。
- job_style:作业类型,可选值为'REGULAR'或'LIGHTWEIGHT',默认为'REGULAR'。
- restartable:作业是否可重启,可选值为TRUE或FALSE,默认为FALSE。
示例:
下面是一个使用DBMS_SCHEDULER.CREATE_JOB创建PL/SQL_BLOCK类型作业的示例:
```
DECLARE
job_name VARCHAR2(30) := 'MY_JOB';
job_type VARCHAR2(30) := 'PLSQL_BLOCK';
job_action VARCHAR2(4000) := 'BEGIN DBMS_OUTPUT.PUT_LINE(''Hello World!''); END;';
BEGIN
DBMS_SCHEDULER.CREATE_JOB(
job_name => job_name,
job_type => job_type,
job_action => job_action,
enabled => TRUE,
auto_drop => FALSE,
comments => 'This is my first job'
);
END;
```
在上面的示例中,我们创建了一个名为'MY_JOB'的作业,作业类型为'PLSQL_BLOCK',作业动作为一个简单的PL/SQL代码块,输出一个'Hello World!'的字符串。作业启用并且不会自动删除,同时添加了一条注释。
阅读全文