Megosztás:


Közvetlen ODBC-végrehajtás

Az utasítás végrehajtásának legegyszerűbb módja a közvetlen végrehajtás. Amikor az utasítást végrehajtásra küldi, az adatforrás egy hozzáférési tervbe állítja, majd végrehajtja a hozzáférési tervet.

A közvetlen végrehajtást általában olyan általános alkalmazások használják, amelyek futtatáskor utasításokat építenek ki és hajtanak végre. A következő kód például létrehoz egy SQL-utasítást, és egyetlen alkalommal hajtja végre:

SQLCHAR *SQLStatement;  
  
// Build a SQL statement.  
BuildStatement(SQLStatement);  
  
// Execute the statement.  
SQLExecDirect(hstmt, SQLStatement, SQL_NTS);  

A közvetlen végrehajtás az egyetlen alkalommal végrehajtandó utasítások esetében működik a legjobban. A fő hátránya, hogy az SQL-utasítás minden végrehajtásakor elemezve lesz. Ezenkívül az alkalmazás nem tud adatokat lekérni az utasítás által létrehozott eredménykészletről (ha van ilyen), amíg az utasítás végrehajtása nem történik meg; ez akkor lehetséges, ha az utasítást két külön lépésben készíti el és hajtja végre.

Az utasítás közvetlen végrehajtásához az alkalmazás a következő műveleteket hajtja végre:

  1. Beállítja a paraméterek értékeit. További információ a Nyilatkozat paraméterei megtalálható a szakasz későbbi részében.

  2. Meghívja az SQLExecDirectet és átadja az SQL-utasítást tartalmazó sztringet.

  3. Az SQLExecDirect meghívásakor az illesztőprogram:

    • Módosítja az SQL-utasítást, hogy az adatforrás SQL-nyelvtanát használja az utasítás elemzése nélkül; Ez magában foglalja az ODBC Escape Sequencesben tárgyalt menekülési sorozatok cseréjét is. Az alkalmazás az SQLNativeSql meghívásával lekérheti egy SQL-utasítás módosított formáját. A feloldósorozatok nem cserélődnek le, ha a SQL_ATTR_NOSCAN utasítás attribútum be van állítva.

    • Lekéri az aktuális paraméterértékeket, és szükség szerint konvertálja őket. További információ a Nyilatkozat paraméterei megtalálható a szakasz későbbi részében.

    • Elküldi az utasítást, és konvertálja a paraméterértékeket az adatforrásnak végrehajtás céljából.

    • Minden hibát visszaad. Ezek közé tartoznak a szekvenálási vagy állapotdiagnosztikák, például az SQLSTATE 24000 (Érvénytelen kurzorállapot), a szintaktikai hibák, például az SQLSTATE 42000 (Szintaktikai hiba vagy hozzáférés megsértése) és szemantikai hibák, például az SQLSTATE 42S02 (Alaptábla vagy nézet nem található).