Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Ký tự không hợp lệ của tôi ở đâu (ORA-00911)

Nếu bạn sử dụng chuỗi ký tự chính xác như bạn đã chỉ cho chúng tôi, thì vấn đề là ; ký tự ở cuối. Bạn có thể không bao gồm điều đó trong chuỗi truy vấn trong các lệnh gọi JDBC.

Khi bạn chỉ chèn một hàng, một INSERT thông thường sẽ tốt ngay cả khi chèn nhiều hàng. Sử dụng một câu lệnh theo lô có thể hiệu quả hơn bất kỳ. Không cần INSERT ALL . Ngoài ra, bạn không cần miếng đệm tạm thời và tất cả những thứ đó. Bạn có thể đơn giản hóa phương thức của mình thành một cái gì đó như thế này (giả sử tôi đã chọn đúng các tham số):

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 SQL:dấu thời gian trong mệnh đề where

  2. PLSQL Chèn vào với truy vấn con và mệnh đề trả về

  3. Làm cách nào để khai báo và sử dụng các biến trong PL / SQL giống như trong T-SQL?

  4. Làm cách nào để lấy danh sách các tháng giữa 2 ngày nhất định bằng cách sử dụng truy vấn?

  5. Làm thế nào để chuyển đổi 1985-02-07T00:00:00.000Z (ISO8601) thành một giá trị ngày tháng trong Oracle?