要在PL/SQL中设置带参数的定时任务,可以使用DBMS_SCHEDULER包来实现。下面是一个简单的示例,演示如何设置一个带参数的定时任务:
DECLARE
l_job_name VARCHAR2(100) := 'MY_JOB';
l_job_action VARCHAR2(100) := 'BEGIN my_procedure(:param1, :param2); END;';
l_start_date TIMESTAMP := SYSTIMESTAMP;
l_interval INTERVAL DAY TO SECOND := INTERVAL '1' SECOND;
l_params DBMS_SCHEDULER.jobclass;
BEGIN
DBMS_SCHEDULER.create_job(
job_name => l_job_name,
job_type => 'PLSQL_BLOCK',
job_action => l_job_action,
start_date => l_start_date,
repeat_interval => l_interval,
enabled => TRUE
);
l_params := DBMS_SCHEDULER.jobclass('param1', 'param2');
DBMS_SCHEDULER.set_job_arguments(job_name => l_job_name, argument_position => 1, argument_value => 'value1');
DBMS_SCHEDULER.set_job_arguments(job_name => l_job_name, argument_position => 2, argument_value => 'value2');
COMMIT;
END;
/
在上面的示例中,我们首先定义了一个作业名称、作业动作、开始日期和重复间隔。然后使用DBMS_SCHEDULER.create_job()过程来创建一个PL/SQL类型的作业。接着使用DBMS_SCHEDULER.jobclass()来定义带有参数名和值的参数对象,并使用DBMS_SCHEDULER.set_job_arguments()来设置作业的参数值。
最后,我们提交了事务,从而使定时任务生效。您可以根据自己的需求修改参数和作业的属性。