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 :
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 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)
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.
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;
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.
Partager