现有一个参数为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');