首批通过分布式安全可靠测评,为关键业务系统打造
SET_JOB_ARGUMENT_VALUE
更新时间:2026-04-06 17:55:14
SET_JOB_ARGUMENT_VALUE 过程用于设置作业参数的值。
SET_JOB_ARGUMENT_VALUE 会覆盖为相应程序或存储过程所设置的参数默认值。参数可以通过位置或名称指定。或者使用 DEFINE_PROGRAM_ARGUMENT 过程为参数分配一个名称。
功能适用性
该内容仅适用于 OceanBase 数据库企业版。OceanBase 数据库社区版暂不支持。
语法
按位置设置参数值
DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE (
job_name IN VARCHAR2,
argument_position IN PLS_INTEGER,
argument_value IN VARCHAR2);
按名称设置参数值
DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE (
job_name IN VARCHAR2,
argument_name IN VARCHAR2,
argument_value IN VARCHAR2);
参数说明
| 参数 | 说明 |
|---|---|
| job_name | 要更改的作业的名称。 |
| argument_name | 正在设置的程序参数的名称。 |
| argument_position | 正在设置的程序参数的位置。 |
| argument_value | 要为程序参数设置的新值。 |
使用说明
SET_JOB_ARGUMENT_VALUE 要求您是作业的所有者或对该作业拥有 ALTER 权限。如果具有 CREATE ANY JOB 权限,还可以设置作业参数值。
SET_JOB_ARGUMENT_VALUE 仅支持 SQL 类型的参数。因此,程序或作业参数不支持非 SQL 类型的参数值,例如布尔值。
但仅当参数类型为 VARCHAR2 时,SET_JOB_ARGUMENT_VALUE 可用于设置轻量级作业的参数。
示例
BEGIN
DBMS_SCHEDULER.CREATE_PROGRAM (
program_name => 'empprog',
program_type => 'STORED_PROCEDURE',
program_action => 'hr.empproc',
number_of_arguments => 1,
enabled => FALSE);
DBMS_SCHEDULER.DEFINE_PROGRAM_ARGUMENT (
program_name =>'empprog',
argument_name =>'emp_no',
argument_position => 1,
argument_type =>'VARCHAR2',
default_value => '0',
out_argument => false);
DBMS_SCHEDULER.ENABLE (job_name => 'empprog');
DBMS_SCHEDULER.DROP_JOB (
job_name =>'job_insert_emp',
force => TRUE);
DBMS_SCHEDULER.CREATE_JOB (
job_name =>'job_insert_emp',
program_name =>'empprog',
auto_drop => TRUE,
start_date => SYSDATE,
job_style => 'LIGHTWEIGHT');
DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE (
job_name =>'job_insert_emp',
argument_name =>'emp_no',
argument_value =>'1357');
DBMS_SCHEDULER.ENABLE ( job_name => 'job_insert_emp');
END;