sql >> Databasteknik >  >> RDS >> Oracle

ORA-01002:hämta ut ur sekvens C++

Din hämtning misslyckas eftersom öppna, deklarera och förbereda allt misslyckades före den tidpunkten, men du kollade inte efter några fel från dessa. Om du gjorde det skulle du få ett ORA-00911: invalid character fel, på grund av detta:

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

Uttalandet som bygger är

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

Men då gör du:

exec sql PREPARE S1 FROM :sql_statement;

Precis som med dynamiska SQL- och JDBC-anrop kan denna förberedelse bara ta en enskild sats. Semikolonet i slutet av din konstruerade sträng är en satsseparator som inte har någon betydelse i det här sammanhanget, och den är ogiltig när det gäller tolken.

Så bara ta bort semikolonet:

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

och lägg till en felkontroll efter varje exec sql .




  1. Generera dynamiskt lambdauttryck med konstanter från variabler

  2. Uppdatera databas från Javascript genom att anropa PHP-skript

  3. MySQL-fråga med JOIN som inte använder INDEX

  4. Hur man får värdena för nästa och nästa nästa datum i en tabell