在本篇文章中,我們主要介紹參數類型的內容,自我感覺有個不錯的建議和大家分享下
現有一個參數為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
????
????
????
????
????
????
????
文章結束給大家分享下程序員的一些笑話語錄: 現在社會太數字化了,所以最好是有一個集很多功能于一身的設備!
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
