あなたはそれを複雑にする方法を作っています。
リスト内の各clobにPreparedStatementとaddBatch()を使用します:
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();
エスケープする文字列をいじったり、リテラルの長さに問題がなかったり、一時的なClobを作成したりする必要はありません。そして、おそらく単一のINSERTALLステートメントを使用するのと同じくらい高速です。
現在のドライバー(> 10.2)を使用している場合は、setCharacterStream()呼び出しとリーダーの作成も必要ないと思います。単純なsetString(1, query)
おそらく同様に機能します。