Fügen Sie CLOB in die Oracle-Datenbank ein
Meine Frage ist: Wie kommst du um die herum?ORA-01704: string literal too long
Fehler beim Einfügen (oder bei Abfragen) mitCLOB
s?
Ich möchte eine Abfrage wie diese haben:
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;
Wenn ich es mit tatsächlichen Werten versuche, bekomme ichORA-01704: string literal too long
zurück. Das ist ziemlich offensichtlich, aber wie füge ich Clobs ein (oder führe überhaupt eine Anweisung mit einem Clob aus)?
Ich habe versucht, das zu betrachtenFrage, aber ich glaube nicht, dass es das hat, wonach ich suche. Die Klumpen, die ich habe, sind in einemList<String>
und ich durchlaufe sie, um die Erklärung abzugeben. Mein Code wie folgt:
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;
}