Udostępnij za pośrednictwem


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..

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

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)