2017-08-28 753 views
1

我有一个封装内这样的过程ORA-27465:对于属性ARGUMENT_POSITION无效值1

PROCEDURE prepBillInfoforAccrualIntr (p_date in date); 

- 创建的程序

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; 

- 定义参数

BEGIN 
    DBMS_SCHEDULER.DEFINE_PROGRAM_ARGUMENT(PROGRAM_NAME  => 'MY_PROGRAM', 
             ARGUMENT_NAME  => 'P_DATE', 
             ARGUMENT_POSITION => 1, 
             ARGUMENT_TYPE  => 'DATE', 
             DEFAULT_VALUE  => ''); 
END; 

- 启用

BEGIN 
    DBMS_SCHEDULER.ENABLE(NAME => 'MY_PROGRAM'); 
END; 

- 创建一个作业

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; 

- 和传递参数

BEGIN 
    DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE(JOB_NAME   => 'MY_TEST_JOB', 
             ARGUMENT_POSITION => 1, 
             ARGUMENT_VALUE => '06-JUL-2017'); 
END; 

这是给下面的错误。

ORA-27465: invalid value 1 for attribute ARGUMENT_POSITION 

我想通过静态日期为06-JUL-2017。我也试图与

dbms_scheduler.set_job_anydata_value

但得到同样的错误。

请你帮忙。

感谢,

+0

您正在使用哪个版本的Oracle? – APC

+0

Oracle数据库11g企业版版本11.1.0.7.0 - 64位 –

回答

0

From the docs,SET_JOB_ARGUMENT_VALUE仅适用于VARCHAR2参数。如果你需要设置一个非VARCHAR2值(在你的情况下是一个日期),你必须改用SET_JOB_ANYDATA_VALUE。我认为这应该工作。

BEGIN 
    DBMS_SCHEDULER.SET_JOB_ANYDATA_VALUE(JOB_NAME   => 'MY_TEST_JOB', 
      ARGUMENT_POSITION => 1, 
      ARGUMENT_VALUE => SYS.ANYDATA.convertDate(TO_DATE('06-JUL-2017','DD-MON-YYYY'))); 
END; 
+0

嗨,我的朋友,感谢您的回复。但得到同样的错误。 : ** ORA-27465:对于属性ARGUMENT_POSITION ORA-06512无效值1:在 “SYS.DBMS_ISCHED”,线213 ORA-06512:在 “SYS.DBMS_SCHEDULER”,线路697 ORA-06512:在线路2' ** –

0

我得到了问题在哪里。

in DBMS_SCHEDULER.CREATE_JOB我们需要通过NUMBER_OF_ARGUMENTS以便DBMS_SCHEDULER.SET_JOB_ANYDATA_VALUEDBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE不会给出错误。

感谢每一个支持。