J'utilise spring-2.5.6 pour me connecter à partir d'une application autonome à une base de données Oracle 10g (ojdbc14.jar) en utilisant le fichier org.apache.commons.dbcp.BasicDataSource. Lorsque j'essaie de récupérer un SqlRowSet à l'aide de la méthode public SqlRowSet queryForRowSet(String sql, Object[] args) throws DataAccessException
, j'obtiens une java.sql.SQLException: taille d'échelle non valide. Ne peut pas être inférieur à zéro.Taille d'échelle non valide. Ne peut pas être inférieur à
Le sql appelant la table est:
select CUSTAREADESC, BEGCOL, COLLENGTH from CUSTOMERAREA where upper(trim(FLEET)) = upper(trim(?)) and CUSTAREANO = ?
Les colonnes BEGCOL et COLLENGTH sont du nombre de type de données sans précision définie.
J'ai trouvé quelques informations sur ce problème, semble être une incompatibilité entre les pilotes Oracle et l'implémentation de com.sun.rowset.CachedRowSetImpl de Sun.
Using queryForRowSet with subquery factoring SQL gives errors
Ils suggèrent de changer le sql à ce qui suit comme un travail autour.
select CUSTAREADESC, (BEGCOL + 0) BEGCOL, (COLLENGTH + 0) COLLENGTH from CUSTOMERAREA where upper(trim(FLEET)) = upper(trim(?)) and CUSTAREANO = ?
Est-ce que quelqu'un sait d'une meilleure solution générique qui n'implique pas sql personnalisé pour une table existante où une colonne ne dispose pas de précision définie?
Limité à Oracle 10g – Rob
Ces fichiers JAR fonctionnent correctement avec 10g. – Gandalf