Bonjour tout le monde,

J'essaie de lancer une procédure stockée ORACLE à partir de code JAVA généré par l'ETL TALEND, mais j'ai l'exception suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
java.sql.SQLException: ORA-20001: An error was encountered - -1858 -ERROR- ORA-01858: caractère non numérique rencontré à la place d'un numérique
ORA-06512: à "CFAMDATA1.PRETRAITEMENT_EOD", ligne 78
ORA-06512: à ligne 1
 
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
    at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:745)
    at oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:215)
    at oracle.jdbc.driver.T4CCallableStatement.executeForRows(T4CCallableStatement.java:965)
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1170)
    at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3339)
    at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3445)
    at oracle.jdbc.driver.OracleCallableStatement.execute(OracleCallableStatement.java:4394)
    at test.a_sr_0_1.preTraitementEOD.tFixedFlowInput_1Process(preTraitementEOD.java:1638)
    at test.a_sr_0_1.preTraitementEOD.tOracleConnection_1Process(preTraitementEOD.java:619)
    at test.a_sr_0_1.preTraitementEOD.tMsgBox_2Process(preTraitementEOD.java:497)
    at test.a_sr_0_1.preTraitementEOD.tMsgBox_1Process(preTraitementEOD.java:405)
    at test.a_sr_0_1.preTraitementEOD.runJobInTOS(preTraitementEOD.java:2031)
    at test.a_sr_0_1.preTraitementEOD.main(preTraitementEOD.java:1876)
Voici le code de ma procédure stockée ORACLE :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 FUNCTION getlastexedate (p_date VARCHAR2, p_entite VARCHAR2)
      RETURN number
   IS
      v_date     DATE;
      p_date_1   DATE;
   BEGIN
 
      SELECT MAX (ap.posting_date)
        INTO v_date
        FROM t1 ap, t2 ae
       WHERE ap.col3 = ae.ID
         AND ae.col2 = p_entite
         AND ap.col1 IN (2, 3, 4);
 
      p_date_1 := j_1_ouvre (p_date);
 
      IF p_date_1 = v_date
      THEN
         RETURN 1;
      END IF;
 
      RETURN -1;
   EXCEPTION
      WHEN OTHERS
      THEN
         raise_application_error (-20001,
                                     'An error was encountered - '
                                  || SQLCODE
                                  || ' -ERROR- '
                                  || SQLERRM
                                 );
   END;
En fait il s'agit de la date que je passe en paramètre sous la forme String date = "25/01/2011" qui cause problème.

Le code généré par TALEND utilise le JDBC c'est pour ça que je poste ce problème ici.

Si vous avez une idée S.V.P n'hésitez pas.
Merci par avance.