Sdílet prostřednictvím


Přímé spuštění ODBC

Přímé spuštění je nejjednodušší způsob, jak spustit příkaz. Když se příkaz odešle ke spuštění, zdroj dat ho zkompiluje do plánu přístupu a pak tento plán přístupu spustí.

Přímé spouštění běžně používají obecné aplikace, které sestavují a spouštějí příkazy za běhu. Například následující kód sestaví příkaz SQL a spustí ho jednou:

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

Přímé spouštění funguje nejlépe pro příkazy, které se spustí jednou. Hlavní nevýhodou je, že příkaz SQL se analyzuje při každém spuštění. Aplikace navíc nemůže načíst informace o sadě výsledků vytvořené příkazem (pokud existuje) až po provedení příkazu; to je možné, pokud je příkaz připravený a proveden ve dvou samostatných krocích.

Pokud chcete příkaz spustit přímo, aplikace provede následující akce:

  1. Nastaví hodnoty všech parametrů. Další informace najdete v části Parametry příkazu dále v této části.

  2. Volá SQLExecDirect a předá mu řetězec obsahující příkaz SQL.

  3. Při volání SQLExecDirect ovladač:

    • Upraví příkaz SQL tak, aby používal gramatiku SQL zdroje dat bez analýzy příkazu; to zahrnuje nahrazení escape sekvencí probíraných v escape sekvencích v ODBC. Aplikace může načíst upravenou formu příkazu SQL voláním SQLNativeSql. Řídicí sekvence se nenahrazují, pokud je nastaven atribut příkazu SQL_ATTR_NOSCAN.

    • Načte aktuální hodnoty parametrů a podle potřeby je převede. Další informace najdete v části Parametry příkazu dále v této části.

    • Odešle příkaz a převedené hodnoty parametrů do zdroje dat ke spuštění.

    • Vrátí všechny chyby. Patří mezi ně diagnostika sekvencování nebo stavu, například SQLSTATE 24000 (neplatný stav kurzoru), syntaktické chyby, jako je SQLSTATE 42000 (chyba syntaxe nebo porušení přístupu), a sémantické chyby, jako je SQLSTATE 42S02 (základní tabulka nebo zobrazení nenalezena).