Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como atualizar string vazia para oracle Clob


Como já mencionei em sua outra pergunta :na minha experiência getClob() e setClob() não funcionam corretamente.

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

Dessa forma, você também pode remover o SELECT desnecessário antes de atualizar, o que também melhorará o desempenho.

Outra opção seria simplesmente definir essa coluna para NULL

Editar:

Com drivers mais recentes (11.x), você também pode tentar usar setString() e getString() na coluna CLOB.

O bloqueio da linha só deve ser necessário quando você usa um localizador LOB que pretende manter durante uma transação que abrange mais de uma instrução (pelo menos é o meu entendimento da referência vinculada ao manual).