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).