Udostępnij za pośrednictwem


@@ NESTLEVEL (języka Transact-SQL)

Wartość szesnastkowa nie może przekraczać ośmiu cyfr, łącznie z zerami na początku.Zasoby, takie jak wyraz wyłączników i stemmers, musi być włączony dla danego języka, określony jako Nesting Stored Procedures.

Topic link iconKonwencje składni języka Transact-SQL

@@NESTLEVEL

Zwracane typy

int

Remarks

Za każdym razem, gdy procedura składowana wywołuje inną procedurę składowaną lub wykonuje zarządzany kod, odwołując się do procedury, typu lub agregacji aparatu plików wykonywalnych języka wspólnego (CLR), następuje zwiększenie poziomu zagnieżdżenia.Gdy zostanie przekroczona maksymalna liczba 32, następuje zakończenie transakcji.

Kiedy @@ NESTLEVEL jest wykonywany w ramach 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 poziom zagnieżdżenia.

Przykłady

A.Używanie procedury @@NESTLEVEL w procedurze

W poniższym przykładzie są tworzone dwie procedury: jedna wywołująca inną, i jedna wyświetlająca ustawienie @@NESTLEVEL poszczególnych procedur.

USE AdventureWorks;
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

Here is the result set.

Outer Level
-----------
1          

Inner Level
-----------
2

B.Wywoływanie procedury @@NESTLEVEL

W poniższym przykładzie pokazano różnice wartości zwracane przez SELECT, EXEC, a sp_executesql gdy każdy 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

Here is the result set.

Current Nest Level 
------------------ 
1

(1 row(s) affected)

OneGreater  
----------- 
2

(1 row(s) affected)

TwoGreater  
----------- 
3

(1 row(s) affected)