SK *_*kub 3 oracle jobs scheduler dbms-scheduler
我在包中有这样的程序
PROCEDURE prepBillInfoforAccrualIntr (p_date in date);
Run Code Online (Sandbox Code Playgroud)
-- 创建了一个程序
BEGIN
DBMS_SCHEDULER.CREATE_PROGRAM(PROGRAM_NAME => 'MY_PROGRAM',
PROGRAM_TYPE => 'STORED_PROCEDURE',
PROGRAM_ACTION => 'GENEVA_ADMIN.IPGTIBCOAPIS_LMS_GENERIC_FIXED.PREPBILLINFOFORACCRUALINTR',
NUMBER_OF_ARGUMENTS => 1,
ENABLED => FALSE,
COMMENTS => 'MY PROGRAM');
END;
Run Code Online (Sandbox Code Playgroud)
-- 定义参数
BEGIN
DBMS_SCHEDULER.DEFINE_PROGRAM_ARGUMENT(PROGRAM_NAME => 'MY_PROGRAM',
ARGUMENT_NAME => 'P_DATE',
ARGUMENT_POSITION => 1,
ARGUMENT_TYPE => 'DATE',
DEFAULT_VALUE => '');
END;
Run Code Online (Sandbox Code Playgroud)
-- 启用
BEGIN
DBMS_SCHEDULER.ENABLE(NAME => 'MY_PROGRAM');
END;
Run Code Online (Sandbox Code Playgroud)
-- 创造了一份工作
BEGIN
DBMS_SCHEDULER.CREATE_JOB(JOB_NAME => 'MY_TEST_JOB',
-- PROGRAM_NAME => 'MY_PROGRAM',
JOB_TYPE => 'STORED_PROCEDURE',
JOB_ACTION => 'GENEVA_ADMIN.IPGTIBCOAPIS_LMS_GENERIC_FIXED.PREPBILLINFOFORACCRUALINTR',
START_DATE => SYSDATE,
AUTO_DROP => TRUE,
COMMENTS => 'MY NEW JOB');
END;
Run Code Online (Sandbox Code Playgroud)
-- 并传递参数
BEGIN
DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE(JOB_NAME => 'MY_TEST_JOB',
ARGUMENT_POSITION => 1,
ARGUMENT_VALUE => '06-JUL-2017');
END;
Run Code Online (Sandbox Code Playgroud)
它给出以下错误。
ORA-27465: invalid value 1 for attribute ARGUMENT_POSITION
Run Code Online (Sandbox Code Playgroud)
我想将静态日期传递为06-JUL-2017. 我也尝试过
dbms_scheduler.set_job_anydata_value
但得到同样的错误。
能否请你帮忙。
谢谢,
我知道问题出在哪里了。
我们DBMS_SCHEDULER.CREATE_JOB需要通过NUMBER_OF_ARGUMENTS这样DBMS_SCHEDULER.SET_JOB_ANYDATA_VALUE才DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE不会给出错误。
感谢大家的支持。