现有一个参数为date类型的存储:
create or replace procedure t_pro(t_var in date)
as
begin
dbms_output.put_line(TO_CHAR(T_VAR,'YYYY'));
--dbms_output.put_line(T_VAR);
end;
job的实现代码为:
begin
dbms_scheduler.create_job(
job_name => 'FFFF',
job_type => 'STORED_PROCEDURE', //表示该job执行的是一个存储过程类型
job_action => '"Schema"."Procedure"', //表示执行的是哪一个存储过程(说白了就是存储的名字),该存储过程不能有输入输出参数和输出参数。
number_of_arguments => 1, //该job的执行程序的参数个数为 1
repeat_interval => 'FREQ=DAILY;INTERVAL=3', //表示每天的3点为执行该job的时间
enabled => FALSE //表示是否启用该job,注意大小写
);
end;
job定义完成后,就要给该job的参数设定值了:
begin
DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE (
job_name => 'FFFF',
argument_position => 1,
argument_value => SYSDATE
);
end;
参数 argument_position => 1 表示的是 该job的参数的位置,如果job中参数有多个,写为2,3,4....依次递增1。注意:如有多个参数需要制定需要这样写
begin
DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE (
job_name => 'FFFF',
argument_position => 1,
argument_value => SYSDATE
);
DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE (
job_name => 'FFFF',
argument_position => 2,
argument_value => val2
);
DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE (
job_name => 'FFFF',
argument_position => 3,
argument_value => val3
);
......
end;
job的参数设置,支持varchar2和date类型参数
启用job和执行job:
EXEC DBMS_SCHEDULER.ENABLE('FFFF');
EXEC DBMS_SCHEDULER.RUN_JOB('FFFF');