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

Sådan opdateres tom streng til oracle Clob

Som jeg allerede har nævnt i dit andet spørgsmål :efter min erfaring virker getClob() og setClob() ikke korrekt.

Brug setCharacterStream() i stedet:

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å den måde kan du også fjerne det unødvendige SELECT før opdatering, hvilket også vil forbedre ydeevnen.

En anden mulighed ville være at sætte den kolonne til NULL

Rediger:

Med nyere drivere (11.x) vil du måske også prøve at bruge setString() og getString() på CLOB-kolonnen.

Låsningen af ​​rækken bør kun være nødvendig, når du bruger en LOB-lokalisator, som du har til hensigt at beholde under en transaktion, der strækker sig over mere end én erklæring (det er i hvert fald min forståelse af den linkede reference til manualen).




  1. Sådan tjekker du PostgreSQL-versionen

  2. Ydeevneforskel mellem tabelsorteringer i MySQL

  3. kan ikke indsætte russisk tekst i mysql-databasen

  4. CSV vs MySQL ydeevne