sql >> Databasteknik >  >> RDS >> Oracle

Var är mitt ogiltiga tecken (ORA-00911)

Om du använder strängen literal exakt som du har visat oss, är problemet ; tecken i slutet. Du får inte inkludera det i frågesträngen i JDBC-anropen.

Eftersom du bara infogar en enda rad, en vanlig INSERT bör vara bra även när du infogar flera rader. Att använda en batchsats är sannolikt effektivare i alla fall. Inget behov av INSERT ALL . Dessutom behöver du inte den tillfälliga klumpen och allt det där. Du kan förenkla din metod till något sånt här (förutsatt att jag har parametrarna rätt):

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


  1. Autentiseringsplugin 'caching_sha2_password' kan inte laddas

  2. Kan du lägga till ett if-uttalande i ORDER BY?

  3. Hur deklarerar man indata-utgångsparametrar i lagrad procedur/funktion i SQL Server?

  4. Byt namn på en kolumn i SQL Server (T-SQL)