Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Parametry w wywołaniach procedury mogą być parametrami wejściowymi, wejściowymi/wyjściowymi lub wyjściowymi. Różni się to od parametrów we wszystkich innych instrukcjach SQL, które są zawsze parametrami wejściowymi.
Parametry wejściowe są używane do wysyłania wartości do procedury. Załóżmy na przykład, że tabela Parts zawiera kolumny PartID, Description i Price. Procedura InsertPart może mieć parametr wejściowy dla każdej kolumny w tabeli. Przykład:
{call InsertPart(?, ?, ?)}
Sterownik nie powinien modyfikować zawartości buforu wejściowego, dopóki program SQLExecDirect lub SQLExecute nie zwróci SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, SQL_INVALID_HANDLE lub SQL_NO_DATA. Zawartość buforu wejściowego nie powinna być modyfikowana, gdy funkcja SQLExecDirect lub SQLExecute zwraca SQL_NEED_DATA lub SQL_STILL_EXECUTING.
Parametry wejściowe/wyjściowe są używane zarówno do wysyłania wartości do procedur, jak i pobierania wartości z procedur. Używanie tego samego parametru co zarówno parametr wejściowy, jak i wyjściowy zwykle jest mylące i należy unikać. Załóżmy na przykład, że procedura akceptuje identyfikator zamówienia i zwraca identyfikator klienta. Można to zdefiniować za pomocą jednego parametru wejściowego/wyjściowego:
{call GetCustID(?)}
Lepszym rozwiązaniem może być użycie dwóch parametrów: parametru wejściowego dla identyfikatora zamówienia oraz parametru wyjściowego lub wejściowego/wyjściowego dla identyfikatora klienta:
{call GetCustID(?, ?)}
Parametry wyjściowe są używane do pobierania wartości zwracanej przez procedurę i pobierania wartości z argumentów procedury; procedury zwracające wartości są czasami znane jako funkcje. Załóżmy na przykład, że właśnie wymieniona procedura GetCustID zwraca wartość wskazującą, czy była w stanie znaleźć zamówienie. W poniższym wywołaniu pierwszy parametr jest parametrem wyjściowym używanym do pobierania wartości zwracanej procedury, drugi parametr jest parametrem wejściowym używanym do określenia identyfikatora zamówienia, a trzeci parametr jest parametrem wyjściowym używanym do pobierania identyfikatora klienta:
{? = call GetCustID(?, ?)}
Sterowniki obsługują wartości parametrów wejściowych i wejściowych/wyjściowych w procedurach w taki sam sposób jak parametry wejściowe w innych instrukcjach SQL. Po wykonaniu instrukcji pobierają wartości zmiennych powiązanych z tymi parametrami i wysyłają je do źródła danych.
Po wykonaniu instrukcji sterowniki przechowują zwrócone wartości parametrów wejściowych/wyjściowych w zmiennych powiązanych z tymi parametrami. Te zwracane wartości nie są gwarantowane do momentu, gdy wszystkie wyniki zwrócone przez procedurę zostaną pobrane, a funkcja SQLMoreResults zwróci SQL_NO_DATA. Jeśli wykonanie instrukcji spowoduje wystąpienie błędu, zawartość buforu parametru wejściowego/wyjściowego lub buforu parametrów wyjściowych jest niezdefiniowana.
Aplikacja wywołuje metodę SQLProcedure , aby określić, czy procedura ma wartość zwracaną. Wywołuje metodę SQLProcedureColumns , aby określić typ (wartość zwracana, dane wejściowe, dane wejściowe/wyjściowe lub dane wyjściowe) każdego parametru procedury.