sql >> Database teknologi >  >> RDS >> Oracle

ORA-01002:hent ud af sekvens C++

Din hentning mislykkes, fordi åbning, erklæring og klargøring mislykkedes før det tidspunkt, men du tjekkede ikke for nogen fejl fra disse. Hvis du gjorde det, ville du få et ORA-00911: invalid character fejl på grund af dette:

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

Udsagnet, der bygger, er

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

Men så gør du:

exec sql PREPARE S1 FROM :sql_statement;

Som med dynamiske SQL- og JDBC-kald kan denne forberedelse kun tage en enkelt sætning. Semikolonet i slutningen af ​​din konstruerede streng er en sætningsseparator, som ikke har nogen betydning i denne sammenhæng, og den er ugyldig, hvad angår parseren.

Så bare fjern det semikolon:

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

og tilføj en fejlkontrol efter hver exec sql .




  1. MySQL-problem:LEFT JOIN på tomt bord

  2. Indlæs Javascript-array med MYSQL-databasedata

  3. Hvordan henter man den aktuelle værdi af en orakelsekvens uden at øge den?

  4. SQL Server undslipper en understregning