在本篇文章中,我们主要介绍参数类型的内容,自我感觉有个不错的建议和大家分享下
现有一个参数为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_action => 'T_PRO', number_of_arguments => 1, repeat_interval => 'FREQ=DAILY;INTERVAL=3', enabled => FALSE ); end; /
其中参数 job_type => 'STORED_PROCEDURE' 表现该job执行的是一个存储进程类型,参数 job_action => 'T_PRO' 表现执行的是个一哪存储进程(说白了就是存储的名字)以下为官方档文对该参数释解:
The action is the name of the stored procedure. You have to specify the schema if the procedure resides in another schema than the job. If case sensitivity is needed, enclose the schema name and the store procedure name in double quotes. For example,
job_action_action=>
'"
Schema
"."
Procedure
"
'
.
PL/SQL procedures with
INOUT
or
OUT
arguments are not supported as
job_action
when the job or program type is
STORED_PROCEDURE
.
官方档文要求
用户名.存储名字
这样写!而且存储进程中有 输入输出和输出参数时,job_type的值都不能为
STORED_PROCEDURE。当然没有了job_type参数,job_acton也不被持支了!
参数 number_of_arguments => 1 代表该job的执行程序(本例就是T_PRO)的参数个数(
T_PRO的个数为 1
)。该参数必要须设置!起官方档文的释解为:This attribute specifies the number of arguments that the job expects. The range is 0-255, with the default being 0.
参数 repeat_interval => 'FREQ=DAILY;INTERVAL=3'表现天天的3点为执行该job的时光!该参数怎么设置请考参官方档文
参数 enabled => FALSE 表现否是用启该job。这里要设置为
FALSE
,
注意大小写!
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; /
参数 argument_value => SYSDATE 表现你要传入的值的定义。该参数官网释解为:
|
The new value to be set for the program argument. To set a non-
给参数设定一个新的值,要设定一个非字符的值,应用
|
SET_JOB_ARGUMENT_VALUE
can be used to set arguments of lightweight jobs but only if the argument is of type
VARCHAR2
.
该存储给轻量级job的参数设置一个值而且该参数的类型要为
VARCHAR2!
官网上很确明的告诉我:job的参数设置,只持支varchar2类型的!,但是验实上去却明证能持支date类型参数!!(验证进程续持了2个小时)
用启job和执行job:
EXEC DBMS_SCHEDULER.ENABLE('FFFF'); EXEC DBMS_SCHEDULER.RUN_JOB('FFFF');
实际上job参数时可以持支date类型的输入参数!!我呆板本版为
SQL> select VERSION from v$instance; VERSION ----------------- 11.2.0.1.0
文章结束给大家分享下程序员的一些笑话语录: 现在社会太数字化了,所以最好是有一个集很多功能于一身的设备!