sql >> Databasteknik >  >> RDS >> Oracle

Hur man uppdaterar tom sträng till oracle Clob

Som jag redan har nämnt i din andra fråga :enligt min erfarenhet fungerar inte getClob() och setClob() korrekt.

Använd setCharacterStream() istället:

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

På så sätt kan du också ta bort onödiga SELECT innan du uppdaterar, vilket också kommer att förbättra prestandan.

Ett annat alternativ skulle vara att helt enkelt ställa in den kolumnen till NULL

Redigera:

Med nyare drivrutiner (11.x) kanske du också vill prova att använda setString() och getString() på kolumnen CLOB.

Låsningen av raden bör endast vara nödvändig när du använder en LOB-locator som du tänker behålla under en transaktion som sträcker sig över mer än ett uttalande (åtminstone är det min uppfattning om den länkade referensen till manualen).




  1. mysql_fetch_array while loop. Hur fungerar det?

  2. FEL:arraystorleken överskrider det maximalt tillåtna (1073741823)

  3. Användning av PDO uppstod undantag kunde inte hitta drivrutinen

  4. Mariadb docker-container Kan inte ansluta till MySQL-server på värd (111 Anslutning nekad) med Python