आप इसे जटिल बना रहे हैं।
अपनी सूची में प्रत्येक क्लॉब के लिए एक तैयार स्टेटमेंट और ऐडबैच () का उपयोग करें:
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();
भागने वाले तार के साथ कोई खिलवाड़ नहीं, शाब्दिक की लंबाई के साथ कोई समस्या नहीं, अस्थायी क्लॉब्स बनाने की कोई आवश्यकता नहीं है। और संभवत:उतना ही तेज़ है जितना कि एक INSERT ALL कथन का उपयोग करना।
यदि आप वर्तमान ड्राइवर (> 10.2) का उपयोग कर रहे हैं तो मुझे लगता है कि सेट कैरेक्टरस्ट्रीम() कॉल और रीडर का निर्माण भी आवश्यक नहीं है। एक साधारण setString(1, query)
संभवतः भी काम करेगा।