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
.