Megosztás a következőn keresztül:


@@NESTLEVEL (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példánySQL-adatbázis a Microsoft Fabricben

Visszaadja a helyi szerveren tárolt eljárás végrehajtásának (kezdetben 0) beágyazási szintjét.

Transact-SQL szintaxis konvenciók

Szemantika

@@NESTLEVEL  

Visszatérési típusok

int

Megjegyzések

Minden alkalommal, amikor egy tárolt eljárás egy másik tárolt eljárást hív, vagy kezelt kódot hajt végre egy közös nyelvi futási (CLR) rutinra, típusra vagy aggregátumra hivatkozva, a beágyazási szint növeksdik. Amikor a maximum, 32 túllépik, a tranzakció megszűnik.

Amikor @@NESTLEVEL egy Transact-SQL láncsoron belül van végrehajtva, a visszaadott érték 1 + az aktuális fészekelési szint. Amikor @@NESTLEVEL dinamikusan hajtjuk végre sp_executesql használatával, a visszanyert érték 2 + az aktuális fészekelési szint.

Példák

A. @@NESTLEVEL használata egy eljárásban

A következő példa két eljárást hoz létre: az egyiket hívja a másikat, és egyet, amely mindegyik beállítását mutatja @@NESTLEVEL .

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  

Itt van az eredmények összessége.

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

B. Hívom @@NESTLEVEL

A következő példa mutatja a különbséget az értékek között, amelyeket , SELECTEXECsp_executesql , és amikor mindegyik meghívja .@@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  

Itt van az eredmények összessége.

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

Lásd még:

Konfigurációs funkciók (Transact-SQL)
Tárolt eljárás létrehozása
@@TRANCOUNT (Transact-SQL)