Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Gdzie jest mój nieprawidłowy znak (ORA-00911)

Jeśli użyjesz literału ciągu dokładnie tak, jak nam pokazałeś, problemem jest ; znak na końcu. Nie możesz tego uwzględnić w ciągu zapytania w wywołaniach JDBC.

Ponieważ wstawiasz tylko jeden wiersz, zwykły INSERT powinno być dobrze, nawet przy wstawianiu wielu wierszy. Użycie instrukcji wsadowej jest prawdopodobnie bardziej wydajne. Nie ma potrzeby INSERT ALL . Dodatkowo nie potrzebujesz tymczasowego kłębu i tak dalej. Możesz uprościć swoją metodę do czegoś takiego (zakładając, że mam prawidłowe parametry):

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle PL/SQL — kolekcje (tabele zagnieżdżone)

  2. java.sql.SQLException:ORA-03115:nieobsługiwany typ danych sieci lub reprezentacja

  3. Jak mogę sprawdzić, czy mój system Oracle obsługuje znaki Unicode lub znaki wielobajtowe?

  4. lokalne typy kolekcji nie są dozwolone w instrukcjach SQL

  5. ORA-12728:nieprawidłowy zakres w wyrażeniu regularnym