Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wo ist mein ungültiges Zeichen (ORA-00911)

Wenn Sie das String-Literal genau so verwenden, wie Sie es uns gezeigt haben, ist das Problem der ; Charakter am Ende. Sie dürfen das nicht in die Abfragezeichenfolge in den JDBC-Aufrufen aufnehmen.

Da Sie nur eine einzelne Zeile einfügen, ein reguläres INSERT sollte auch beim Einfügen mehrerer Zeilen in Ordnung sein. Die Verwendung einer Batch-Anweisung ist wahrscheinlich ohnehin effizienter. INSERT ALL ist nicht erforderlich . Außerdem brauchen Sie den temporären Clob und all das nicht. Sie können Ihre Methode so vereinfachen (vorausgesetzt, ich habe die Parameter richtig):

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();