sql >> Database >  >> RDS >> Oracle

ORA-01002:ophalen uit de volgorde C++

Je fetch mislukt omdat het openen, declareren en voorbereiden allemaal voor dat punt is mislukt, maar je hebt niet gecontroleerd op eventuele fouten. Als je dat deed, kreeg je een ORA-00911: invalid character fout, hierdoor:

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

De verklaring die wordt opgebouwd is

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

Maar dan doe je:

exec sql PREPARE S1 FROM :sql_statement;

Net als bij dynamische SQL- en JDBC-aanroepen, kan deze voorbereiding slechts één instructie bevatten. De puntkomma aan het einde van je geconstrueerde tekenreeks is een scheidingsteken voor instructies dat in deze context geen betekenis heeft, en het is ongeldig voor zover het de parser betreft.

Dus verwijder gewoon die puntkomma:

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

en voeg een foutcontrole toe na elke exec sql .




  1. #1411 - Onjuiste datetime-waarde voor functie str_to_date op INSERT INTO...SELECT

  2. Tabel exporteren van Postgres-database (op server) naar csv-bestand (op lokaal) in java

  3. Hoe worden reactieve streams in Slick gebruikt voor het invoegen van gegevens?

  4. Hoe python mysqldb te gebruiken om veel rijen tegelijk in te voegen