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.
Parametry ve volání procedur můžou být vstupní, vstupní/výstupní nebo výstupní parametry. To se liší od parametrů ve všech ostatních příkazech SQL, které jsou vždy vstupními parametry.
Vstupní parametry se používají k odesílání hodnot do procedury. Předpokládejme například, že tabulka Parts obsahuje sloupce PartID, Description a Price. Procedura InsertPart může mít vstupní parametr pro každý sloupec v tabulce. Například:
{call InsertPart(?, ?, ?)}
Ovladač by neměl upravovat obsah vstupní vyrovnávací paměti, dokud SQLExecDirect nebo SQLExecute nevrátí SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, SQL_INVALID_HANDLE nebo SQL_NO_DATA. Obsah vstupní vyrovnávací paměti by neměl být měněn, zatímco SQLExecDirect nebo SQLExecute vrátí SQL_NEED_DATA nebo SQL_STILL_EXECUTING.
Vstupní/výstupní parametry slouží k odesílání hodnot do procedur a načítání hodnot z procedur. Použití stejného parametru jako vstupní i výstupní parametr má tendenci být matoucí a mělo by se jim vyhnout. Předpokládejme například, že procedura přijímá ID objednávky a vrací ID zákazníka. Dá se definovat pomocí jednoho vstupního a výstupního parametru:
{call GetCustID(?)}
Může být lepší použít dva parametry: vstupní parametr pro ID objednávky a výstupní nebo vstupní/výstupní parametr pro ID zákazníka:
{call GetCustID(?, ?)}
Výstupní parametry se používají k načtení návratové hodnoty procedury a k načtení hodnot z argumentů procedury; procedury, které vracejí hodnoty, se někdy označují jako funkce. Předpokládejme například, že procedura GetCustID právě zmíněná vrátí hodnotu, která označuje, zda bylo možné najít pořadí. V následujícím volání je prvním parametrem výstupní parametr použitý k načtení návratové hodnoty procedury, druhým parametrem je vstupní parametr použitý k zadání ID objednávky a třetí parametr je výstupní parametr použitý k načtení ID zákazníka:
{? = call GetCustID(?, ?)}
Ovladače zpracovávají hodnoty vstupních a vstupních/výstupních parametrů v procedurách bez rozdílu než vstupní parametry v jiných příkazech SQL. Při spuštění příkazu načtou hodnoty proměnných vázaných na tyto parametry a odešlou je do zdroje dat.
Po provedení příkazu ovladače ukládají vrácené hodnoty vstupních a výstupních parametrů do proměnných vázaných na tyto parametry. Tyto vrácené hodnoty nejsou zaručeny, dokud nebudou všechny výsledky vrácené procedurou načteny a SQLMoreResults vrátí SQL_NO_DATA. Pokud provedení příkazu způsobí chybu, obsah vyrovnávací paměti vstupního/výstupního parametru nebo vyrovnávací paměti výstupního parametru není definován.
Aplikace volá SQLProcedure , aby určila, jestli má procedura návratovou hodnotu. Volá SQLProcedureColumns k určení typu (návratová hodnota, vstup, vstup/výstup nebo výstup) každého parametru procedury.