Ihr Abruf schlägt fehl, weil das Öffnen, Deklarieren und Vorbereiten vor diesem Punkt fehlgeschlagen ist, Sie jedoch nicht nach Fehlern von diesen gesucht haben. Wenn Sie dies tun, erhalten Sie einen ORA-00911: invalid character
Fehler, deswegen:
strcpy((char *)sql_statement.arr,"select supplierNumber, supplierName ");
strcat((char *)sql_statement.arr,"from supplier ");
strcat((char *)sql_statement.arr,"where supplierNumber < > 1;");
Die Anweisung, die erstellt wird, ist
select supplierNumber, supplierName from supplier where supplierNumber < > 1;
Aber dann tun Sie:
exec sql PREPARE S1 FROM :sql_statement;
Wie bei dynamischen SQL- und JDBC-Aufrufen kann diese Vorbereitung nur eine einzige Anweisung annehmen. Das Semikolon am Ende Ihres konstruierten Strings ist ein Anweisungstrenner, der in diesem Zusammenhang keine Bedeutung hat und für den Parser ungültig ist.
Entfernen Sie einfach das Semikolon:
strcpy((char *)sql_statement.arr,"select supplierNumber, supplierName ");
strcat((char *)sql_statement.arr,"from supplier ");
strcat((char *)sql_statement.arr,"where supplierNumber < > 1");
und fügen Sie nach jedem exec sql
eine Fehlerprüfung hinzu .