2017-08-28 758 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不會給出錯誤。

感謝每一個支持。