Udostępnij za pośrednictwem


Wywołanie procedury przechowywanej (OLE DB)

Procedura składowana może mieć zero lub więcej parametrów.Może również zwracać wartość.Podczas korzystania z SQL Server macierzystego klienta dostawca OLE DB, mogą być przekazywane parametry procedura składowana:

  • Zakodowane wartości danych.

  • Za pomocą znacznik parametru (?), aby określić parametry, powiązania zmiennej program znacznik parametru, a następnie umieść wartości danych w zmiennej program.

Ostrzeżenie

Podczas wywoływania SQL Server OLE DB przy użyciu nazwanych parametrów procedur przechowywanych, nazwy parametrów musi zaczynać się od '@' znak.Jest to SQL Server określonych ograniczeń. SQL Server Macierzystego klienta dostawca OLE DB wymusza ograniczenie to bardziej ściśle niż MDAC.

Aby obsługiwać parametry, ICommandWithParameters interfejs jest narażony na obiekt polecenia.Używania parametrów, konsument najpierw opisano parametry dostawca, wywołując ICommandWithParameters::SetParameterInfo metoda (lub opcjonalnie przygotowuje telefonicznej instrukcja wywołującym GetParameterInfo metoda).Następnie tworzy konsumenta metoda dostępu , określa strukturę buforu i umieszcza w tym buforze wartości parametrów.Wreszcie, przechodzi uchwyt metoda dostępu i wskaźnik do buforu do Wykonywanie.W późniejszym wywołania Wykonywanie, konsumenta umieszcza nowe wartości parametru w buforze i wywołania Wykonywanie wskaźnikiem metoda dostępu uchwyt i buforu.

Polecenia, który wywołuje procedura składowana tymczasowo przy użyciu parametrów musi najpierw wywołać ICommandWithParameters::SetParameterInfo do definiowania informacji o parametrach przed polecenia można pomyślnie przygotowany.Wynika to z wewnętrzną nazwę procedura składowana tymczasowo różni się od zewnętrznych nazwa używana przez klienta i SQLOLEDB nie można zbadać tabele systemowe, aby określić parametry dla procedura składowana tymczasowo.

Są to czynności w parametrze powiązanie proces:

  1. Wypełnij informacje na temat parametrów w tablicy struktur DBPARAMBINDINFO; oznacza to, że parametr Nazwa, nazwa dostawca dla typu danych parametru lub standardowych danych wpisz nazwę i tak dalej.Każda struktura tablicy opisano jeden parametr.Ta tablica jest następnie przekazywany do metoda SetParameterInfo metody.

  2. Wywołanie ICommandWithParameters::SetParameterInfo metoda, aby opisać parametry dostawca.Metoda SetParameterInfo określa macierzystego typu danych każdego parametru.Metoda SetParameterInfo argumenty są:

    • Liczba parametrów do zestaw wpisz informacje.

    • Tablica parametru liczebniki porządkowe, dla którego ma być zestaw wpisz informacje.

    • Tablica struktur DBPARAMBINDINFO.

  3. Tworzenie metoda dostępu parametru za pomocą IAccessor::CreateAccessor polecenia.metoda dostępu określa strukturę buforu i umieszcza wartości parametrów w buforze.CreateAccessor polecenie tworzy metoda dostępu zestaw powiązań.Te powiązania są opisane przez konsumenta za pomocą tablicy struktur DBBINDING.Każdego powiązanie kojarzy pojedynczy parametr do buforu konsumenta i zawiera informacje, takie jak:

    • Liczba porządkowa parametru, którego dotyczy powiązanie.

    • Co to jest związany (wartości danych, jego długość i jego stan).

    • Przesunięcie w buforze na każdej z tych części.

    • Długość i typ danych wartości, jak istnieje w buforze konsumenta.

    metoda dostępu jest identyfikowany przez uchwytu, jest typu HACCESSOR.Ten uchwyt jest zwracany przez CreateAccessor metoda.Przy każdym zakończeniu konsumenta przy użyciu metoda dostępu konsument musi wywołać ReleaseAccessor metody, aby zwolnić pamięć, posiada.

    Gdy konsument wywołuje metodę, takich jak ICommand::Execute, przekazaniem uchwyt metoda dostępu i wskaźnik do buforu, sam.Dostawca wykorzystuje to metoda dostępu do określenia sposobu transferu danych znajdujących się w buforze.

  4. Wypełnij struktury DBPARAMS.Zmienne konsumenta z parametr wejściowy, którego wartości są pobierane i do których parametr wyjściowy wartości są zapisywane są przekazywane przy uruchomieniu czas do ICommand::Execute w strukturze DBPARAMS.Struktura DBPARAMS zawiera trzy elementy:

    • Wskaźnik do buforu, w którym dostawca pobiera dane parametr wejściowy i do którego dostawca zwraca wyprowadzanie danych parametru, zgodnie z określonego przez uchwyt metoda dostępu powiązań.

    • Liczba zestawów parametrów w buforze.

    • Uchwyt metoda dostępu utworzony w kroku 3.

  5. Wykonanie polecenia przy użyciu ICommand::Execute.

Metody wywołania procedury przechowywanej

Podczas wykonywania procedura składowana w SQL Server, SQL Server macierzystego klienta OLE DB dostawca obsługuje:

  • Wywołanie ODBC sekwencji unikowej.

  • Procedura zdalnego wywoływania (procedur RPC) sekwencji unikowej.

  • Transact-SQL Instrukcja EXECUTE.

Sekwencji unikowej połączenia ODBC

Jeśli znasz informacje parametru wywołania ICommandWithParameters::SetParameterInfo metoda, aby opisać parametry dostawca.W przeciwnym razie użyto składni ODBC WYWOŁANIA w wywołaniu procedura składowana dostawca wywołuje funkcja Pomocnik znaleźć informacje na temat parametrów procedura składowana.

Jeśli nie masz pewności informacje parametru (parametr metadane), zaleca się Wywołanie ODBC składnię.

Ogólna składnia wywołania procedury przy użyciu sekwencji unikowej wywołanie ODBC jest:

{[?=]callprocedure_name[([parameter][,[parameter]]...)]}

Na przykład:

{call SalesByCategory('Produce', '1995')}

Sekwencji unikowej RPC

Sekwencji unikowej RPC jest podobna do składni ODBC wywołanie wywoływanie procedura składowana.Jeśli procedura będzie wywoływać wiele razy, RPC sekwencji unikowej zapewnia optymalną wydajność większości spośród trzech metod wywołania procedura składowana.

Gdy jest używane do sekwencji unikowej RPC wykonać procedura składowana, dostawca nie wywołania dowolnej pomocnika funkcja do określenia parametrów (jak przypadek wystąpienia wywołanie ODBC składnię).Składnia RPC jest prostsze niż składnia WYWOŁANIA ODBC, więc polecenie jest analizowany szybciej, poprawy wydajności.W takim przypadek należy podać informacje na temat parametrów przez wykonywanie ICommandWithParameters::SetParameterInfo.

Sekwencji unikowej RPC wymaga wartości zwracanej.Jeżeli procedura składowana zwraca wartości, serwer zwraca 0 domyślnie.Ponadto nie można otworzyć SQL Server kursora na procedura składowana.procedura składowana jest niejawnie przygotowany i wywołania ICommandPrepare::Prepare nie powiedzie się.Ze względu na niezdolność do przygotowania wywołanie RPC nie można zbadać kolumna metadane; IColumnsInfo::GetColumnInfo i IColumnsRowset::GetColumnsRowset zwracają DB_E_NOTPREPARED.

Jeśli znasz metadane parametr sekwencji unikowej RPC jest zalecanym sposobem wykonać procedur przechowywanych.

Jest to przykład sekwencji unikowej RPC do wywoływania procedura składowana:

{rpc SalesByCategory}

Witrynie CodePlex zawiera przykładową aplikację przedstawiającą sekwencji unikowej RPC; zobacz SQL ServerPrzykładowe aparat bazy danych więcej informacji.

Instrukcja EXECUTE Transact-SQL

Sekwencji unikowej wywołanie ODBC i sekwencji unikowej RPC są preferowanej metody wywoływania procedura składowana, a nie Wykonywanie instrukcja. SQL Server Macierzystego klienta dostawca OLE DB używa mechanizmu RPC SQL Server w celu zoptymalizowania przetwarzania polecenia.Niniejszy protokół RPC zwiększa wydajność, eliminując wiele parametrów przetwarzania i analizowania instrukcja wykonywane na serwerze.

This is an example of the Transact-SQL EXECUTE statement:

EXECUTE SalesByCategory 'Produce', '1995'

Zobacz także

Inne zasoby