ですでに述べたように、他の質問 :私の経験では、getClob()とsetClob()は正しく機能しません。
setCharacterStream()
を使用します 代わりに:
StringReader clob = new StringReader("");
pStmt = conn.prepareStatement("update activity set REFERENCE = ? WHERE ID = ?");
pStmt.setCharacterStream(1, clob, 0);
pStmt.setLong(2, 1);
pStmt.executeUpdate();
そうすれば、更新する前に不要なSELECTを削除することもできます。これにより、パフォーマンスも向上します。
別のオプションは、単にその列をNULL
に設定することです。
編集:
新しいドライバー(11.x)では、setString()
を使用することもできます。 およびgetString()
CLOB列。
行のロックは、複数のステートメントにまたがるトランザクション中に保持する予定のLOBロケーターを使用する場合にのみ必要です(少なくとも、マニュアルへのリンクされた参照についての私の理解です)。