Oracle
 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 извиквания, тази подготовка може да приеме само един оператор. Точката и запетая в края на конструирания от вас низ е разделител на изрази, който няма никакво значение в този контекст и е невалиден, що се отнася до анализатора.

Така че просто премахнете тази точка и запетая:

    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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. управление на исторически редове в база данни

  2. Експортирайте резултатите от заявката в XML файл, когато използвате SQLcl (Oracle)

  3. Как да определите седмица от тримесечие в заявка на Oracle

  4. Инсталиране на Oracle Instant Client

  5. предаване на името на таблицата като параметър на plsql