sql >> Database teknologi >  >> RDS >> Oracle

Hvor er mit ugyldige tegn (ORA-00911)

Hvis du bruger strengen literal præcis som du har vist os, er problemet ; tegn til sidst. Du må ikke inkludere det i forespørgselsstrengen i JDBC-kaldene.

Da du kun indsætter en enkelt række, en almindelig INSERT burde være helt fint, selv når du indsætter flere rækker. Det er sandsynligvis mere effektivt at bruge en batch-erklæring. Intet behov for INSERT ALL . Derudover behøver du ikke den midlertidige klat og alt det der. Du kan forenkle din metode til noget som dette (forudsat at jeg fik parametrene rigtige):

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. Liste over fremmednøgler og de tabeller, de refererer til i Oracle DB

  2. Regulære udtryk i SQL Server-servere?

  3. "Er det hemmeligt? Er det sikkert?" Håndtering af følsomme data i din datamodellering

  4. SQL Server 2016:Opret en lagret procedure