Du machst es dir viel zu kompliziert.
Verwenden Sie ein PreparedStatement und addBatch() für jeden Clob in Ihrer Liste:
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();
Kein Herumspielen mit Escape-Strings, kein Problem mit der Länge der Literale, keine Notwendigkeit, temporäre Clobs zu erstellen. Und höchstwahrscheinlich genauso schnell wie die Verwendung einer einzelnen INSERT ALL-Anweisung.
Wenn Sie einen aktuellen Treiber (> 10.2) verwenden, ist der Aufruf von setCharacterStream() und das Erstellen des Readers meiner Meinung nach auch nicht erforderlich. Ein einfacher setString(1, query)
wird höchstwahrscheinlich auch funktionieren.