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.








Répondre avec citation

Partager