0

Java アプリケーションで新しい拡張 varchar2 制限を適用する必要があると考えました。これまでに行ったことは次のとおりです。

  1. 推奨手順に従って、MAX_STRING_SIZE を EXTENDED に変更しました。
  2. 問題の列を 32767 文字に拡張しました。
  3. プログラムを実行しました。

Java 呼び出しResultSet.updateString( str, idx )は正常に実行されますが、ResultSet.updateRow() に到達すると、Oracle エラーを参照する Java 例外が発生します。

java.sql.SQLException: ORA-01461: LONG 列に挿入するためだけに LONG 値をバインドできます

完全なエラー スタック (または少なくとも私のコードを参照していない部分) は次のとおりです。

java.sql.SQLException: ORA-01461: can bind a LONG value only for insert into a LONG column
at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70)
at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:173)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:455)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:413)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:1030)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:194)
at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:947)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1222)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3381)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3462)
at oracle.jdbc.driver.UpdatableResultSet.executeUpdateRow(UpdatableResultSet.java:3317)
at oracle.jdbc.driver.UpdatableResultSet.updateRow(UpdatableResultSet.java:2281)

私が推測できる限り、これはそれであるはずです。しかし、基本的なことを忘れているか、これはバグ (おそらく jdbc ライブラリー) に違いありません。

4

1 に答える 1

1

12c からの JDBC ドライバーを使用する必要があります。

于 2015-05-22T22:05:27.087 に答える