Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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:
Nastaví hodnoty všech parametrů. Další informace najdete v části Parametry příkazu dále v této části.
Volá SQLExecDirect a předá mu řetězec obsahující příkaz SQL.
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).