Bonjour,
je recherche de l'aide concernant un problème rencontré régulièrement sur les différents forum Talend mais pour lequel je n'arrive pas à trouver de solution.
J'ai une procédure stockée Oracle qui prend en paramètre IN un objet de type tableau de varchar2 :
TYPE mon_tab IS array(1000000) of varchar2(1000)
procedure ma_proc(i_data IN mon_tab, o_msg out varchar2)
Je voudrais appeler cette procédure depuis un job Talend.
J'ai une première partie de traitement qui transforme un flux d'entrée en tableau de String[] (dans le TJavaFlex).
Puis j'envoie ce tableau dans un t_oracleSP avec comme paramètre IN le tableau de String.
Lorsque j'exécute mon job, le tableau est bien créé mais lors de l'envoi à la procédure j'ai une erreur :
Exception in component tOracleSP_1
java.sql.SQLException: Type de colonne non valide
at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70)
at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:133)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:199)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:263)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:271)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:445)
at oracle.jdbc.driver.OraclePreparedStatement.setObjectCritical(OraclePreparedStatement.java:7937)
at oracle.jdbc.driver.OraclePreparedStatement.setObjectInternal(OraclePreparedStatement.java:7517)
at oracle.jdbc.driver.OraclePreparedStatement.setObjectInternal(OraclePreparedStatement.java:8174)
at oracle.jdbc.driver.OracleCallableStatement.setObject(OracleCallableStatement.java:4094)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.setObject(OraclePreparedStatementWrapper.java:230)
at extractions.mon_job_0_1.mon_job.tFixedFlowInput_1Process(mon_job.java:1716)
at extractions.mon_job_0_1.mon_job.tFileInputExcel_1Process(mon_job.java:1153)
at extractions.mon_job_0_1.mon_job.tOracleConnection_1Process(mon_job.java:2029)
at extractions.mon_job_0_1.mon_job.runJobInTOS(mon_job.java:2253)
at extractions.mon_job_0_1.mon_job.main(mon_job.java:2083)
Si quelqu'un a une idée de comment résoudre ce problème, je suis preneur ... Je sèche complètement....
Merci d'avance
Partager