Oracle
 sql >> Datenbank >  >> RDS >> Oracle

So aktualisieren Sie eine leere Zeichenfolge in Oracle Clob

Wie ich bereits in Ihrer anderen Frage erwähnt habe :meiner Erfahrung nach funktionieren getClob() und setClob() nicht richtig.

Verwenden Sie setCharacterStream() stattdessen:

StringReader clob = new StringReader("");
pStmt = conn.prepareStatement("update activity set REFERENCE = ? WHERE ID = ?");
pStmt.setCharacterStream(1, clob, 0);
pStmt.setLong(2, 1);
pStmt.executeUpdate();

Auf diese Weise können Sie auch das unnötige SELECT vor dem Update entfernen, was die Leistung ebenfalls verbessert.

Eine andere Möglichkeit wäre, diese Spalte einfach auf NULL zu setzen

Bearbeiten:

Bei neueren Treibern (11.x) können Sie auch versuchen, setString() zu verwenden und getString() in der CLOB-Spalte.

Das Sperren der Zeile sollte nur erforderlich sein, wenn Sie einen LOB-Locator verwenden, den Sie während einer Transaktion beibehalten möchten, die sich über mehr als eine Anweisung erstreckt (so verstehe ich zumindest den verlinkten Verweis auf das Handbuch).