Als je de letterlijke tekenreeks precies gebruikt zoals je ons hebt laten zien, is het probleem de ;
karakter op het einde. U mag dat niet opnemen in de queryreeks in de JDBC-aanroepen.
Aangezien u slechts één rij invoegt, wordt een gewone INSERT
zou prima moeten zijn, zelfs bij het invoegen van meerdere rijen. Het gebruik van een batchstatement is sowieso efficiënter. Geen behoefte aan INSERT ALL
. Bovendien heb je de tijdelijke clob en zo niet meer nodig. Je kunt je methode vereenvoudigen tot iets als dit (ervan uitgaande dat ik de parameters goed heb):
String query1 = "select substr(to_char(max_data),1,4) as year, " +
"substr(to_char(max_data),5,6) as month, max_data " +
"from dss_fin_user.acq_dashboard_src_load_success " +
"where source = 'CHQ PeopleSoft FS'";
String query2 = ".....";
String sql = "insert into domo_queries (clob_column) values (?)";
PreparedStatement pstmt = con.prepareStatement(sql);
StringReader reader = new StringReader(query1);
pstmt.setCharacterStream(1, reader, query1.length());
pstmt.addBatch();
reader = new StringReader(query2);
pstmt.setCharacterStream(1, reader, query2.length());
pstmt.addBatch();
pstmt.executeBatch();
con.commit();