sql >> Base de Datos >  >> RDS >> Oracle

Cómo actualizar una cadena vacía a Oracle Clob

Como ya mencioné en su otra pregunta :en mi experiencia, getClob() y setClob() no funcionan correctamente.

Usa setCharacterStream() en cambio:

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 esa manera, también puede eliminar el SELECT innecesario antes de actualizar, lo que también mejorará el rendimiento.

Otra opción sería simplemente establecer esa columna en NULL

Editar:

Con los controladores más nuevos (11.x), también puede intentar usar setString() y getString() en la columna CLOB.

El bloqueo de la fila solo debería ser necesario cuando usa un localizador de LOB que tiene la intención de mantener durante una transacción que abarca más de una declaración (al menos esa es mi comprensión de la referencia vinculada al manual).