Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment mettre à jour une chaîne vide vers Oracle Clob

Comme je l'ai déjà mentionné dans votre autre question :d'après mon expérience, getClob() et setClob() ne fonctionnent pas correctement.

Utilisez setCharacterStream() à la place :

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

De cette façon, vous pouvez également supprimer le SELECT inutile avant la mise à jour, ce qui améliorera également les performances.

Une autre option serait de simplement définir cette colonne sur NULL

Modifier :

Avec les pilotes plus récents (11.x), vous pouvez également essayer d'utiliser setString() et getString() dans la colonne CLOB.

Le verrouillage de la ligne ne devrait être nécessaire que lorsque vous utilisez un localisateur LOB que vous avez l'intention de conserver lors d'une transaction qui s'étend sur plus d'une instruction (du moins c'est ma compréhension de la référence liée au manuel).