私は、Spring-2.5.6を使用して、org.apache.commons.dbcp.BasicDataSourceを使用してスタンドアロンアプリケーションからOracle 10gデータベース(ojdbc14.jar)に接続しています。 public SqlRowSet queryForRowSet(String sql, Object[] args) throws DataAccessException
メソッドを使用してSqlRowSetを取得しようとすると、「java.sql.SQLException:Invalid scale size」が表示されます。 0より小さくできません。スケールのサイズが無効です。 0より小さくできません
テーブルを呼び出すSQLがある:
select CUSTAREADESC, BEGCOL, COLLENGTH from CUSTOMERAREA where upper(trim(FLEET)) = upper(trim(?)) and CUSTAREANO = ?
列BEGCOLとCOLLENGTHが定義されていない精度のデータタイプ番号です。
この問題に関する情報がいくつか見つかりましたが、OracleのドライバとSunのcom.sun.rowset.CachedRowSetImplの実装との間に互換性がないようです。
Using queryForRowSet with subquery factoring SQL gives errors
彼らは周りの仕事として、次のようにSQLを変更することをお勧めします。
select CUSTAREADESC, (BEGCOL + 0) BEGCOL, (COLLENGTH + 0) COLLENGTH from CUSTOMERAREA where upper(trim(FLEET)) = upper(trim(?)) and CUSTAREANO = ?
カラムに精度が定義されていない既存のテーブルに対してカスタムSQLを使用しない方が良い汎用ソリューションを知っている人はいますか?
Oracle 10gに制限 – Rob
これらのJARは10gで正常に動作します。 – Gandalf