Wywołanie procedury przechowywanej
The SQL Server Native Client ODBC driver supports both the ODBC CALL escape sequence and the Transact-SQL EXECUTE statement for executing stored procedures; the ODBC CALL escape sequence is the preferred method.Używając składni ODBC włącza aplikację do pobrania zwracanych kodów procedur przechowywanych i SQL Server sterownik ODBC macierzystym klienta również jest zoptymalizowany do używania protokół pierwotnie opracowane w celu wysyłania wywołań zdalnego wywoływania (procedur RPC) między komputerami z systemem SQL Server.Niniejszy protokół RPC zwiększa wydajność, eliminując wiele parametrów przetwarzania i analizowania instrukcja wykonywane na serwerze.
Ostrzeżenie
Podczas wywoływania SQL Server z ODBC za pomocą nazwanych parametrów procedur przechowywanych (Aby uzyskać więcej informacji, zobacz Parametry wiążące przez nazwę (nazwane parametry)), nazwy parametrów musi zaczynać się od '@' znak.Jest to SQL Server określonych ograniczeń. SQL Server Więcej ściśle niż Microsoft Data Access Components (MDAC) ograniczenie to wymusza sterownik ODBC macierzystym klienta.
Jest sekwencji unikowej wywołanie ODBC do wywoływania procedury:
{[?=]callprocedure_name[([parameter][,[parameter]]...)]}
gdy procedure_name Określa nazwę procedury i parametr określa parametr procedury.Parametry nazwane są obsługiwane tylko w sprawozdaniu za pomocą sekwencji unikowej wywołanie ODBC.
Procedura może mieć zero lub więcej parametrów.Może również zwracać wartość (wskazywany przez znacznik opcjonalny parametr? = na początku składnię).Jeśli parametr jest dane wejściowe lub parametr wejścia i wyjścia, może to być literał lub znacznik parametru.Jeśli parametr jest parametrem wyjściowym, musi być znacznik parametru, ponieważ wynik jest nieznany.Parametru musi być powiązana z SQLBindParameter przed wywołaniem procedury wykonaniu instrukcja.
Parametry wejściowe i wejścia i wyjścia można pominąć z wywołania procedury.Jeśli procedura wywoływana jest w nawiasach, ale bez żadnych parametrów, sterownik informuje źródło danych, aby używać wartości domyślnej dla pierwszego parametru.Na przykład:
{wywołania procedure_name**()**}
Jeśli procedura nie ma żadnych parametrów, procedura może się nie powieść.Procedura zostanie wywołana bez nawiasów, sterownik nie wysyła żadnych wartości parametru.Na przykład:
{wywołania procedure_name}
Literały mogą być określone dla parametrów wejściowych i wejścia i wyjścia w wywołania procedury.Na przykład procedura InsertOrder ma pięć parametrów wejściowych.Poniższe wywołanie InsertOrder pomija pierwszy parametr, przewiduje literału drugi parametr i używa znacznik parametru trzeci, czwarty i piąty parametrów.(Parametry są numerowane kolejno, począwszy od wartości 1.)
{call InsertOrder(, 10, ?, ?, ?)}
Należy zauważyć, że jeśli parametr zostanie pominięty, przecinek rozgraniczającego go od innych parametrów muszą nadal wyświetlane.Pominięcie parametru wejściowego lub wejścia i wyjścia, procedura używa domyślnej wartości parametru.Inne sposoby Określ domyślną wartość parametru wejściowego lub wejścia i wyjścia są zestaw wartość długości i wskaźnik buforu powiązana parametr SQL_DEFAULT_PARAM lub słowo kluczowe domyślne.
Jeżeli pominięto parametr wejścia i wyjścia lub literał jest podany dla parametru, sterownik odrzuca wartości wyjściowych.Podobnie jeżeli znacznik parametru dla wartości zwracanej procedura zostanie pominięty, sterownik odrzuca zwracanej wartości.Wreszcie Jeśli aplikacja określa parametr wartość zwracana dla procedury, która nie zwraca wartości, sterownik ustawia wartość buforu długości i wskaźnik związany z parametru SQL_NULL_DATA.
Ograniczniki w sprawozdaniu WYWOŁANIA
SQL Server Sterownik ODBC macierzystym klienta domyślnie obsługuje również szczególnym opcja zgodności sekwencji {CALL} ODBC escape.Sterownik akceptuje wywołanie sprawozdania tylko jeden zestaw podwójnych cudzysłowów rozgraniczającego nazwa całej procedura składowana:
{ CALL "master.dbo.sp_who" }
Domyślnie SQL Server sterownik ODBC macierzystym klienta akceptuje również instrukcje wywołanie, które zgodnie z regułami ISO i ująć w podwójny cudzysłów każdego identyfikatora:
{ CALL "master"."dbo"."sp_who" }
Podczas pracy z ustawieniami domyślnymi, jednak SQL Server sterownik ODBC macierzystym klienta nie obsługuje korzystania z obu formularzy cytowany identyfikator z identyfikatorami zawierające znaki nie są określone jako prawny w identyfikatorach według normy ISO.Na przykład sterownik nie może uzyskać dostępu procedura składowana "My.Proc" za pomocą instrukcja CALL z identyfikatorów w cudzysłowach:
{ CALL "MyDB"."MyOwner"."My.Proc" }
To instrukcja jest interpretowany przez sterownik jako:
{ CALL MyDB.MyOwner.My.Proc }
Serwer wywołuje błąd serwer połączony o nazwie MyDB nie istnieje.
Problem nie występuje podczas korzystania z identyfikatorami w nawiasach kwadratowych, interpretowane tej instrukcja:
{ CALL [MyDB].[MyOwner].[My.Table] }