Oracle
 sql >> Database >  >> RDS >> Oracle

Come aggiornare una stringa vuota in Oracle Clob

Come ho già accennato in l'altra tua domanda :nella mia esperienza getClob() e setClob() non funzionano correttamente.

Usa setCharacterStream() invece:

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

In questo modo puoi anche rimuovere il SELECT non necessario prima dell'aggiornamento, il che migliorerà anche le prestazioni.

Un'altra opzione sarebbe semplicemente impostare quella colonna su NULL

Modifica:

Con i driver più recenti (11.x) potresti anche voler provare a utilizzare setString() e getString() nella colonna CLOB.

Il blocco della riga dovrebbe essere necessario solo quando utilizzi un localizzatore LOB che intendi conservare durante una transazione che copre più di un'istruzione (almeno questa è la mia comprensione del riferimento collegato al manuale).