その時点より前にオープン、宣言、および準備がすべて失敗したため、フェッチは失敗していますが、それらのエラーをチェックしていません。そうした場合、ORA-00911: invalid character
が表示されます エラー、これによる:
strcpy((char *)sql_statement.arr,"select supplierNumber, supplierName "); strcat((char *)sql_statement.arr,"from supplier "); strcat((char *)sql_statement.arr,"where supplierNumber < > 1;");
プレ>構築するステートメントは
select supplierNumber, supplierName from supplier where supplierNumber < > 1;
プレ>しかし、あなたは:
exec sql PREPARE S1 FROM :sql_statement;
プレ>動的 SQL および JDBC 呼び出しと同様に、この準備は 1 つのステートメントしか取ることができません。構成された文字列の末尾にあるセミコロンは、このコンテキストでは意味を持たないステートメントの区切り記号であり、パーサーに関する限り無効です。
したがって、そのセミコロンを削除してください:
strcpy((char *)sql_statement.arr,"select supplierNumber, supplierName "); strcat((char *)sql_statement.arr,"from supplier "); strcat((char *)sql_statement.arr,"where supplierNumber < > 1");
プレ>各
exec sql
の後にエラーチェックを追加します .