参数类型11g_job执行带参数的procedure

系统 1468 0

在本篇文章中,我们主要介绍参数类型的内容,自我感觉有个不错的建议和大家分享下

    现有一个参数为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 表现你要传入的值的定义。该参数官网释解为:

    

argument_value

The new value to be set for the program argument. To set a non- VARCHAR value, use the SET_JOB_ANYDATA_VALUE procedure.

给参数设定一个新的值,要设定一个非字符的值,应用 SET_JOB_ANYDATA_VALUE  存储! .

    

    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
  

    

    

    

    

    

    

    

文章结束给大家分享下程序员的一些笑话语录: 现在社会太数字化了,所以最好是有一个集很多功能于一身的设备!

参数类型11g_job执行带参数的procedure


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论