sql >> Databáze >  >> RDS >> Oracle

ORA-01002:načtení mimo sekvenci C++

Vaše načtení se nezdařilo, protože před tímto bodem selhaly všechny položky otevřít, deklarovat a připravit, ale nezkontrolovali jste z nich žádné chyby. Pokud byste to udělali, dostali byste ORA-00911: invalid character chyba kvůli tomuto:

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

Výrok, který se staví, je

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

Ale pak to uděláte:

exec sql PREPARE S1 FROM :sql_statement;

Stejně jako u dynamických volání SQL a JDBC může tato příprava trvat pouze jeden příkaz. Středník na konci vašeho vytvořeného řetězce je oddělovač příkazů, který v tomto kontextu nemá žádný význam a je neplatný, pokud jde o analyzátor.

Stačí tedy odstranit středník:

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

a po každém exec sql přidejte kontrolu chyb .




  1. Zobrazit tři obrázky od každého uživatele

  2. Načítání miliard řádků ze vzdáleného serveru?

  3. Komplexní klauzule WHERE pomocí PHP Doctrine ORM

  4. Nejlepší ekvivalent pro IsInteger v SQL Server