Oracle
 sql >> Baza danych >  >> RDS >> Oracle

ORA-01002:pobierz poza sekwencją C++

Twoje pobieranie kończy się niepowodzeniem, ponieważ otwieranie, zadeklarowanie i przygotowanie wszystkich nie powiodło się przed tym punktem, ale nie sprawdziłeś żadnych błędów z nich. Jeśli tak, otrzymasz ORA-00911: invalid character błąd, z tego powodu:

    strcpy((char *)sql_statement.arr,"select supplierNumber, supplierName ");
    strcat((char *)sql_statement.arr,"from supplier ");
    strcat((char *)sql_statement.arr,"where supplierNumber < > 1;");

Oświadczenie, które buduje, to

select supplierNumber, supplierName from supplier where supplierNumber < > 1;

Ale wtedy robisz:

exec sql PREPARE S1 FROM :sql_statement;

Podobnie jak w przypadku dynamicznych wywołań SQL i JDBC, to przygotowanie może zająć tylko jedną instrukcję. Średnik na końcu skonstruowanego ciągu jest separatorem instrukcji, który nie ma żadnego znaczenia w tym kontekście i jest niepoprawny, jeśli chodzi o parser.

Więc po prostu usuń ten średnik:

    strcpy((char *)sql_statement.arr,"select supplierNumber, supplierName ");
    strcat((char *)sql_statement.arr,"from supplier ");
    strcat((char *)sql_statement.arr,"where supplierNumber < > 1");

i dodaj sprawdzanie błędów po każdym 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. Jak wyeksportować wyniki zapytania do pliku CSV w SQLcl (Oracle)

  2. Zastępowanie wartości null na podstawie warunku

  3. Jaka jest minimalna konfiguracja wymagana do wdrożenia aplikacji .NET z klientem Oracle 11?

  4. NHibernate Oracle — nie można załadować biblioteki DLL „OraOps10w.dll”

  5. łączenie wielu stołów