Passage d'un tableau java à une procédure stockée
Bonjour,
je suis confronté à un problème lors du passage d'un tableau d'entiers de mon code Java vers une procédure stockée.
Dans ma base de données Oracle 9i, j'ai déclaré un type INTEGER_ARRAY :
Code:
1 2
| CREATE OR REPLACE
TYPE INTEGER_ARRAY AS TABLE OF NUMBER(10); |
J'utilise ensuite ce type coté java pour transformer mon Tableau Java dans un type conpréhensible par Oracle :
Code:
1 2 3 4
| long[] eleidsArray = new long[eleIds.size()];
[...]
ArrayDescriptor desc = ArrayDescriptor.createDescriptor("INTEGER_ARRAY", currentConnection);
ARRAY oracleArray = new ARRAY(desc, currentConnection, eleidsArray) |
Ce code fonctionne trés bien avec avec des petits tableaux. Par contre dès que la taille dépasse 13500 éléments j'ai une exception (ce qui pose un problème vu que mes tableaux peuvent dépasser les 200000 éléments) :
Code:
1 2 3 4 5 6 7 8 9
| java.sql.SQLException: Arguments non valides dans l'appel
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:269)
at oracle.jdbc.dbaccess.DBItem.setArrayData(DBItem.java:262)
at oracle.jdbc.dbaccess.DBDataSetImpl.setADTBindItem(DBDataSetImpl.java:2738)
at oracle.jdbc.driver.OraclePreparedStatement.setARRAY(OraclePreparedStatement.java:1760)
at oracle.jdbc.driver.OraclePreparedStatement.setObject(OraclePreparedStatement.java:3083)
at oracle.jdbc.driver.OraclePreparedStatement.setObject(OraclePreparedStatement.java:3111) |
et voici la déclaration de ma proc stock :
Code:
1 2 3 4 5 6
| function getAttrData (
docId integer,
evo integer,
idList integer_array
)
return XDB_ATTR_TYPE PIPELINED; |
Je vous remercie d'avance.