Udostępnij za pomocą


@@NESTLEVEL (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBaza danych SQL w usłudze Microsoft Fabric

Zwraca poziom zagnieżdżenia bieżącego wykonania procedury przechowywanej (początkowo 0) na lokalnym serwerze.

Transact-SQL konwencje składni

Składnia

@@NESTLEVEL  

Typy zwracane

int

Uwagi

Za każdym razem, gdy procedura przechowywana wywołuje inną procedurę przechowywaną lub wykonuje kod zarządzany poprzez odwołanie do procedury, typu lub agregatu w języku common language runtime (CLR), poziom zagnieżdżenia jest zwiększany. Gdy maksymalna liczba 32 zostanie przekroczona, transakcja zostaje zakończona.

Gdy @@NESTLEVEL jest wykonywany w ciągu Transact-SQL, zwracana wartość wynosi 1 + aktualny poziom zagnieżdżenia. Gdy @@NESTLEVEL jest wykonywany dynamicznie za pomocą sp_executesql wartość zwracana wynosi 2 + aktualny poziom zagnieżdżenia.

Przykłady

A. Wykorzystanie @@NESTLEVEL w procedurze

Poniższy przykład tworzy dwie procedury: jedną wywołującą drugą, a drugą wyświetlającą @@NESTLEVEL ustawienia każdej z nich.

USE AdventureWorks2022;  
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. Dzwonię @@NESTLEVEL

Poniższy przykład pokazuje różnicę wartości zwracanych przez SELECT, , oraz sp_executesql gdy każda z nich wywołuje @@NESTLEVELEXEC.

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 też

Funkcje konfiguracji (Transact-SQL)
Utwórz procedurę składowaną
@@TRANCOUNT (Transact-SQL)