@@NESTLEVEL (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-databas i Microsoft Fabric

Returnerar nästlingsnivån för den aktuella lagrade procedurens exekvering (initialt 0) på den lokala servern.

Transact-SQL syntaxkonventioner

Syntax

@@NESTLEVEL  

Returtyper

int

Anmärkningar

Varje gång en lagrad proprodur anropar en annan lagrad produ eller kör hanterad kod genom att referera till en common language runtime (CLR)-rutin, typ eller aggregat, ökar nästlingsnivån. När maxgränsen på 32 överskrids avslutas transaktionen.

När @@NESTLEVEL körs inom en Transact-SQL sträng är värdet som returneras 1 + den aktuella nästlingsnivån. När @@NESTLEVEL utförs dynamiskt med sp_executesql är det returnerade värdet 2 + den aktuella nästlingsnivån.

Examples

A. Att använda @@NESTLEVEL i en procedur

Följande exempel skapar två procedurer: en som anropar den andra, och en som visar inställningen @@NESTLEVEL för varje.

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  

Här är resultatet.

Outer Level  
-----------  
1  
 
Inner Level  
-----------  
2

B. Ringer @@NESTLEVEL

Följande exempel visar skillnaden i värden som returneras av SELECT, , och sp_executesql när var och en av dem anropar @@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  

Här är resultatet.

Current Nest Level  
------------------  
1  
 
(1 row(s) affected)  
 
OneGreater  
-----------  
2  
 
(1 row(s) affected)  
 
TwoGreater  
-----------  
3  
 
(1 row(s) affected)

Se även

Konfigurationsfunktioner (Transact-SQL)
Skapa en lagrad procedur
@@TRANCOUNT (Transact-SQL)