Ich verwende Spring-2.5.6, um von einer eigenständigen Anwendung zu einer Oracle 10g-Datenbank (ojdbc14.jar) über die org.apache.commons.dbcp.BasicDataSource zu verbinden. Wenn ich versuche, ein SqlRowSet mit der public SqlRowSet queryForRowSet(String sql, Object[] args) throws DataAccessException
Methode abzurufen, bekomme ich eine 'java.sql.SQLException: Ungültige Maßstabsgröße. Kann nicht kleiner als Null sein.Ungültige Maßstabsgröße. Kann nicht weniger als Null sein
Die SQL die Tabelle Aufruf ist:
select CUSTAREADESC, BEGCOL, COLLENGTH from CUSTOMERAREA where upper(trim(FLEET)) = upper(trim(?)) and CUSTAREANO = ?
Die Säulen BEGCOL und COLLENGTH der Datentypnummer sind ohne Präzision definiert.
Ich habe einige Informationen zu diesem Problem gefunden, scheint eine Inkompatibilität zwischen den Oracle-Treibern und Sun-Implementierung der com.sun.rowset.CachedRowSetImpl.
Using queryForRowSet with subquery factoring SQL gives errors
Sie schlagen vor, die SQL auf die folgende als Arbeit um ändern.
select CUSTAREADESC, (BEGCOL + 0) BEGCOL, (COLLENGTH + 0) COLLENGTH from CUSTOMERAREA where upper(trim(FLEET)) = upper(trim(?)) and CUSTAREANO = ?
Hat jemand eine bessere allgemeine Lösung kennen, die definiert keine benutzerdefinierte SQL für jede vorhandene Tabelle beinhaltet, wo eine Spalte nicht Präzision hat?
Eingeschränkt auf Oracle 10g – Rob
Diese JARs funktionieren gut mit 10g. – Gandalf