Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

ORA-00102:ambil di luar urutan C++

Pengambilan Anda gagal karena pembukaan, deklarasi, dan persiapan semuanya gagal sebelum titik itu, tetapi Anda tidak memeriksa kesalahan apa pun darinya. Jika ya, Anda akan mendapatkan ORA-00911: invalid character kesalahan, karena ini:

    strcpy((char *)sql_statement.arr,"select supplierNumber, supplierName ");
    strcat((char *)sql_statement.arr,"from supplier ");
    strcat((char *)sql_statement.arr,"where supplierNumber < > 1;");

Pernyataan yang dibangun adalah

select supplierNumber, supplierName from supplier where supplierNumber < > 1;

Tapi kemudian Anda melakukannya:

exec sql PREPARE S1 FROM :sql_statement;

Seperti panggilan SQL dan JDBC dinamis, persiapan ini hanya dapat mengambil satu pernyataan. Titik koma di akhir string yang Anda buat adalah pemisah pernyataan yang tidak memiliki arti apa pun dalam konteks ini, dan tidak valid sejauh menyangkut pengurai.

Jadi hapus saja titik koma itu:

    strcpy((char *)sql_statement.arr,"select supplierNumber, supplierName ");
    strcat((char *)sql_statement.arr,"from supplier ");
    strcat((char *)sql_statement.arr,"where supplierNumber < > 1");

dan tambahkan pemeriksaan kesalahan setelah setiap exec sql .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Anaconda 3.5 (Windows 64bit) Instal cx_Oracle

  2. Apa perbedaan antara varchar dan varchar2 di Oracle?

  3. Dapatkan id sisipan terakhir dengan Oracle 11g menggunakan JDBC

  4. PHP, Oracle, dan ODBC:Bagaimana cara memeriksa apakah kumpulan hasil kosong?

  5. Biaya kueri:Tabel Sementara Global vs. Koleksi (Array Virtual)