Vaše načtení se nezdařilo, protože před tímto bodem selhaly všechny položky otevřít, deklarovat a připravit, ale nezkontrolovali jste z nich žádné chyby. Pokud byste to udělali, dostali byste ORA-00911: invalid character
chyba kvůli tomuto:
strcpy((char *)sql_statement.arr,"select supplierNumber, supplierName ");
strcat((char *)sql_statement.arr,"from supplier ");
strcat((char *)sql_statement.arr,"where supplierNumber < > 1;");
Výrok, který se staví, je
select supplierNumber, supplierName from supplier where supplierNumber < > 1;
Ale pak to uděláte:
exec sql PREPARE S1 FROM :sql_statement;
Stejně jako u dynamických volání SQL a JDBC může tato příprava trvat pouze jeden příkaz. Středník na konci vašeho vytvořeného řetězce je oddělovač příkazů, který v tomto kontextu nemá žádný význam a je neplatný, pokud jde o analyzátor.
Stačí tedy odstranit středník:
strcpy((char *)sql_statement.arr,"select supplierNumber, supplierName ");
strcat((char *)sql_statement.arr,"from supplier ");
strcat((char *)sql_statement.arr,"where supplierNumber < > 1");
a po každém exec sql
přidejte kontrolu chyb .