NESTLEVEL @@ (Transact-SQL)
Zwraca zagnieżdżenia poziom bieżącego wykonywania procedura składowana (początkowo 0) na serwerze lokalnym.Aby uzyskać informacje dotyczące poziomów zagnieżdżenia, zobacz Zagnieżdżanie procedur przechowywanych..
Składnia
@@NESTLEVEL
Zwracane typy
int
Uwagi
Za każdym czas wywołuje procedura składowana inną procedura składowana lub wykonuje kod zarządzany odwołując się do wspólnej procedury runtime (CLR) języka, typ lub wartość zagregowana, jest zwiększany o jeden poziom zagnieżdżenia.Po przekroczeniu maksymalnego 32 transakcja zostanie zakończona.
Kiedy wykonywany @@ NESTLEVEL Transact-SQL ciąg, wartość zwracana jest 1 + bieżący zagnieżdżanie poziom.Kiedy @@ NESTLEVEL jest wykonywane dynamicznie za pomocą sp_executesql wartość zwracana jest 2 + bieżący poziomzagnieżdżenia.
Przykłady
A.W procedurze przy użyciu @@ NESTLEVEL
Poniższy przykład tworzy dwie procedury: który wywołuje drugiej i umieszczaniu @@NESTLEVEL ustawienie każdej.
USE AdventureWorks2008R2;
GO
IF OBJECT_ID (N'usp_OuterProc', N'P')IS NOT NULL
DROP PROCEDURE usp_OuterProc;
GO
IF OBJECT_ID (N'usp_InnerProc', N'P')IS NOT NULL
DROP PROCEDURE usp_InnerProc;
GO
CREATE PROCEDURE usp_InnerProc AS
SELECT @@NESTLEVEL AS 'Inner Level';
GO
CREATE PROCEDURE usp_OuterProc AS
SELECT @@NESTLEVEL AS 'Outer Level';
EXEC usp_InnerProc;
GO
EXECUTE usp_OuterProc;
GO
Oto zestaw wyników.
Outer Level
-----------
1
Inner Level
-----------
2
B.Wywołanie @@ NESTLEVEL
Poniższy przykład przedstawia różnicę w wartości zwracane przez SELECT, EXEC, i sp_executesql podczas każdego z nich wywołuje @@NESTLEVEL.
CREATE PROC usp_NestLevelValues AS
SELECT @@NESTLEVEL AS 'Current Nest Level';
EXEC ('SELECT @@NESTLEVEL AS OneGreater');
EXEC sp_executesql N'SELECT @@NESTLEVEL as TwoGreater' ;
GO
EXEC usp_NestLevelValues;
GO
Oto zestaw wyników.
Current Nest Level
------------------
1
(1 row(s) affected)
OneGreater
-----------
2
(1 row(s) affected)
TwoGreater
-----------
3
(1 row(s) affected)
Zobacz także