要在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()來設置作業的參數值。
最后,我們提交了事務,從而使定時任務生效。您可以根據自己的需求修改參數和作業的屬性。