sql >> データベース >  >> RDS >> Oracle

ORA-01002:C++の順序が正しくありません

    その時点より前にオープン、宣言、および準備がすべて失敗したため、フェッチは失敗していますが、それらのエラーをチェックしていません。そうした場合、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 の後にエラーチェックを追加します .




    1. 複数文字の区切り文字で文字列の行を短縮するにはどうすればよいですか?

    2. mysqli_query()は、少なくとも2つのパラメーターを想定しています。1つは?

    3. データベースをコピーする最良の方法(SQL Server 2008)

    4. SQLAlchemyのPythonでdataframe.to_sqlをロールバックする方法は?