Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Baza 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)