Insertar CLOB en la base de datos Oracle
Mi pregunta es: ¿Cómo te mueves por elORA-01704: string literal too long
error al insertar (o hacer cualquier cosa en las consultas) conCLOB
s?
Quiero tener una consulta como esta:
INSERT ALL
INTO mytable VALUES ('clob1')
INTO mytable VALUES ('clob2') --some of these clobs are more than 4000 characters...
INTO mytable VALUES ('clob3')
SELECT * FROM dual;
Cuando lo intento con valores reales me saleORA-01704: string literal too long
atrás. Esto es bastante obvio, pero ¿cómo inserto clobs (o ejecuto cualquier declaración con un clob)?
He intentado mirar estopregunta, pero no creo que tenga lo que estoy buscando. Los clobs que tengo están en unaList<String>
y los itero para hacer la declaración. Mi código como sigue:
private void insertQueries(String tempTableName) throws FileNotFoundException, DataException, SQLException, IOException {
String preQuery = " into " + tempTableName + " values ('";
String postQuery = "')" + StringHelper.newline;
StringBuilder inserts = new StringBuilder("insert all" + StringHelper.newline);
List<String> readQueries = getDomoQueries();
for (String query : readQueries) {
inserts.append(preQuery).append(query).append(postQuery);
}
inserts.append("select * from dual;");
DatabaseController.getInstance().executeQuery(databaseConnectionURL, inserts.toString());
}
public ResultSet executeQuery(String connection, String query) throws DataException, SQLException {
Connection conn = ConnectionPool.getInstance().get(connection);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(query);
conn.commit();
ConnectionPool.getInstance().release(conn);
return rs;
}