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

Inserir CLOB no banco de dados Oracle


Você está tornando isso complicado.

Use um PreparedStatement e addBatch() para cada clob em sua lista:
String sql = "insert  into " + tempTableName + " values (?)";
PreparedStatement stmt = connection.prepareStatement(sql);
for (String query : readQueries) {
  stmt.setCharacterStream(1, new StringReader(query), query.lenght());
  stmt.addBatch();
}
stmt.exececuteBatch();

Sem mexer com strings de escape, sem problemas com o comprimento dos literais, sem necessidade de criar clobs temporários. E provavelmente tão rápido quanto usar uma única instrução INSERT ALL.

Se você estiver usando um driver atual (> 10.2), acho que a chamada setCharacterStream() e a criação do Reader também não são necessárias. Um simples setString(1, query) provavelmente funcionará também.