Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-database in Microsoft Fabric
Geeft het nestingsniveau terug van de huidige uitvoering van de opgeslagen procedure (aanvankelijk 0) op de lokale server.
Transact-SQL syntaxis-conventies
Syntaxis
@@NESTLEVEL
Retourtypen
int
Opmerkingen
Elke keer dat een opgeslagen procedure een andere opgeslagen procedure aanroept of beheerde code uitvoert door te verwijzen naar een common language runtime (CLR) routine, type of aggregate, wordt het nestingsniveau verhoogd. Wanneer het maximum van 32 wordt overschreden, wordt de transactie beëindigd.
Wanneer @@NESTLEVEL binnen een Transact-SQL string wordt uitgevoerd, is de teruggegeven waarde 1 + het huidige genesingsniveau. Wanneer @@NESTLEVEL dynamisch wordt uitgevoerd met sp_executesql is de teruggegeven waarde 2 + het huidige genesingsniveau.
Voorbeelden
Eén. Het gebruik van @@NESTLEVEL in een procedure
Het volgende voorbeeld creëert twee procedures: één die de andere aanroept, en één die de @@NESTLEVEL instelling van elk weergeeft.
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
Hier is het resultatenoverzicht.
Outer Level
-----------
1
Inner Level
-----------
2
B. Oproep @@NESTLEVEL
Het volgende voorbeeld toont het verschil in waarden die worden teruggegeven door SELECT, , en sp_executesql wanneer elk van hen aanroept@@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
Hier is het resultatenoverzicht.
Current Nest Level
------------------
1
(1 row(s) affected)
OneGreater
-----------
2
(1 row(s) affected)
TwoGreater
-----------
3
(1 row(s) affected)
Zie ook
configuratiefuncties (Transact-SQL)
Een opgeslagen procedure maken
@@TRANCOUNT (Transact-SQL)