Tìm nạp của bạn không thành công vì mở, khai báo và chuẩn bị tất cả không thành công trước thời điểm đó, nhưng bạn đã không kiểm tra bất kỳ lỗi nào từ những thứ đó. Nếu bạn làm vậy, bạn sẽ nhận được ORA-00911: invalid character
lỗi, vì điều này:
strcpy((char *)sql_statement.arr,"select supplierNumber, supplierName ");
strcat((char *)sql_statement.arr,"from supplier ");
strcat((char *)sql_statement.arr,"where supplierNumber < > 1;");
Câu lệnh xây dựng là
select supplierNumber, supplierName from supplier where supplierNumber < > 1;
Nhưng sau đó bạn làm:
exec sql PREPARE S1 FROM :sql_statement;
Giống như với các lệnh gọi SQL và JDBC động, việc chuẩn bị này chỉ có thể thực hiện một câu lệnh duy nhất. Dấu chấm phẩy ở cuối chuỗi được xây dựng của bạn là dấu phân tách câu lệnh không có bất kỳ ý nghĩa nào trong ngữ cảnh này và nó không hợp lệ theo như trình phân tích cú pháp có liên quan.
Vì vậy, chỉ cần xóa dấu chấm phẩy đó:
strcpy((char *)sql_statement.arr,"select supplierNumber, supplierName ");
strcat((char *)sql_statement.arr,"from supplier ");
strcat((char *)sql_statement.arr,"where supplierNumber < > 1");
và thêm kiểm tra lỗi sau mỗi exec sql
.