2017-08-28 4 views
1

Je procédure comme celui-ci dans un packageORA-27465: valeur non valide 1 pour l'attribut ARGUMENT_POSITION

PROCEDURE prepBillInfoforAccrualIntr (p_date in date); 

- a créé un programme

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; 

- l'argument défini

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

- a permis

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

- a créé un emploi

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; 

- et arguments passant

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

Il donne ci-dessous erreur.

ORA-27465: invalid value 1 for attribute ARGUMENT_POSITION 

Je veux passer la date statique 06-JUL-2017. J'ai aussi essayé avec

dbms_scheduler.set_job_anydata_value

mais obtenir la même erreur.

Pourriez-vous s'il vous plaît aider.

Merci,

+0

Quelle version d'Oracle utilisez-vous? – APC

+0

Base de données Oracle 11g Enterprise Edition Version 11.1.0.7.0 - 64bit –

Répondre

0

From the docs, SET_JOB_ARGUMENT_VALUE ne fonctionne que pour les arguments VARCHAR2. Si vous devez définir une valeur non-VARCHAR2 (dans votre cas, une date), vous devez utiliser SET_JOB_ANYDATA_VALUE à la place. Je pense que cela devrait fonctionner.

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

Bonjour mon ami, Merci pour votre réponse. Mais obtenir la même erreur. : ** ORA-27465: valeur non valide 1 pour l'attribut ARGUMENT_POSITION ORA-06512: à "SYS.DBMS_ISCHED", la ligne 213 ORA-06512: à "SYS.DBMS_SCHEDULER", ligne 697 ORA-06512: à la ligne 2 ' ** –

0

J'ai obtenu où est le problème.

dans DBMS_SCHEDULER.CREATE_JOB nous devons passer NUMBER_OF_ARGUMENTS de sorte que DBMS_SCHEDULER.SET_JOB_ANYDATA_VALUE ou DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE ne donnera pas d'erreur.

Merci à tous pour votre soutien.