Udostępnij za pośrednictwem


Nesting Stored Procedures

Procedury przechowywane są zagnieżdżone, gdy procedura przechowywana wywołuje inny lub wykonuje kod zarządzany, odwołując się do środowiska CLR procedury, typ lub agregacja.Można zagnieździć procedur przechowywanych i kod zarządzany odwołuje się do 32 poziomy.Poziom zagnieżdżenia zwiększa o jeden przy o nazwie procedura przechowywana lub odwołanie do kod zarządzany rozpoczyna się wykonywanie i zmniejsza się o jeden podczas o nazwie procedura przechowywana lub kod zarządzany, odwołanie kończy wykonywanie.Próby przekracza maksymalnie 32 poziomów zagnieżdżenia powoduje, że cała wywoływania łańcucha nie powiedzie się.Bieżący poziom zagnieżdżenia procedur przechowywanych w realizacji jest przechowywana w funkcja NESTLEVEL @@.

Uwaga

Każde odwołanie do kod zarządzany z Transact-SQL Procedura przechowywana jest liczone jako jeden poziom w ograniczeniu 32 poziomu zagnieżdżenia. Metody wywoływane z kodem zarządzanym nie są uwzględniane przez ten limit.

Gdy procedura przechowywana wykonuje kod zarządzany przez odwołującego się do standardowego środowiska CLR, typu lub agregacja, to odwołanie jest również liczone jako jeden poziom zagnieżdżenia.Metody wywoływane z kodem zarządzanym nie są uwzględniane przez ten limit.Bieżący poziom zagnieżdżenia jest zwracana przez funkcja NESTLEVEL @@.When a CLR stored procedure performs data access operations through the Microsoft SQL Server managed provider, an additional nesting level is added in the transition from managed code to SQL and this level is reflected in the @@NESTLEVEL function.

Błąd w procedurze przechowywanej z zagnieżdżonych nie jest zawsze krytyczny do wywołania procedura przechowywana.Podczas wywoływania procedura przechowywana w obrębie procedura przechowywana, należy użyć Transact-SQL ZWROTU instrukcję, aby powrócić zwracane kody i sprawdzić kod powrotny z wywołanie procedura przechowywana. W ten sposób można określić zachowanie procedur przechowywanych, jeśli wystąpią błędy.Aby uzyskać więcej informacji na temat korzystania z kodów zwrotnych zobacz Zwracanie danych przy użyciu kodu zwrotu.

Procedury przechowywane mogą nawet do wywołania zagnieżdżone, z techniki znanej jako rekursji.

Mimo że zagnieżdżania ograniczenie wynosi 32 poziomy SQL Server nie ma żadnych ograniczeń liczby procedur przechowywanych, które mogą być wywoływane z danej procedura przechowywana, pod warunkiem, że podrzędny procedur przechowywanych nie wywoływać inne podrzędne procedur przechowywanych i maksymalnego poziom zagnieżdżenia nigdy nie został przekroczony.