@@NESTLEVEL (Transact-SQL)@@NESTLEVEL (Transact-SQL)

Anwendungsbereich:Applies to: JaSQL ServerSQL Server (alle unterstützten Versionen) yesSQL ServerSQL Server (all supported versions) JaAzure SQL-DatenbankAzure SQL DatabaseYesAzure SQL-DatenbankAzure SQL DatabaseAnwendungsbereich:Applies to: JaSQL ServerSQL Server (alle unterstützten Versionen) yesSQL ServerSQL Server (all supported versions) JaAzure SQL-DatenbankAzure SQL DatabaseYesAzure SQL-DatenbankAzure SQL Database

Gibt die Schachtelungsebene der aktuellen Ausführung einer gespeicherten Prozedur auf dem lokalen Server zurück (anfangs 0).Returns the nesting level of the current stored procedure execution (initially 0) on the local server.

Symbol für Themenlink Transact-SQL-SyntaxkonventionenTopic link icon Transact-SQL Syntax Conventions

SyntaxSyntax

@@NESTLEVEL  

Hinweis

Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 oder früher finden Sie unter Dokumentation zu früheren Versionen.To view Transact-SQL syntax for SQL Server 2014 and earlier, see Previous versions documentation.

RückgabetypenReturn Types

intint

BemerkungenRemarks

Jedes Mal, wenn eine gespeicherte Prozedur eine andere gespeicherte Prozedur aufruft oder durch Verweis auf eine Common Language Routine (CLR), einen Typ oder ein Aggregat verwalteten Code ausführt, wird die Schachtelungsebene erhöht.Each time a stored procedure calls another stored procedure or executes managed code by referencing a common language runtime (CLR) routine, type, or aggregate, the nesting level is incremented. Wird der Höchstwert von 32 überschritten, so wird die Transaktion beendet.When the maximum of 32 is exceeded, the transaction is terminated.

Wenn @@NESTLEVEL innerhalb einer Transact-SQLTransact-SQL-Zeichenfolge ausgeführt wird, entspricht der zurückgegebene Wert 1 + der aktuellen Schachtelungsebene.When @@NESTLEVEL is executed within a Transact-SQLTransact-SQL string, the value returned is 1 + the current nesting level. Wenn @@NESTLEVEL mithilfe von sp_executesql dynamisch ausgeführt wird, entspricht der zurückgegebene Wert 2 + der aktuellen Schachtelungsebene.When @@NESTLEVEL is executed dynamically by using sp_executesql the value returned is 2 + the current nesting level.

BeispieleExamples

A.A. Verwenden von @@NESTLEVEL in einer ProzedurUsing @@NESTLEVEL in a procedure

Dieses Beispiel erstellt zwei Prozeduren: Eine, die eine andere Prozedur aufruft, und eine, die die @@NESTLEVEL -Einstellung beider Prozeduren anzeigt.The following example creates two procedures: one that calls the other, and one that displays the @@NESTLEVEL setting of each.

USE AdventureWorks2012;  
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 ist das Resultset.Here is the result set.

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

B.B. Aufrufen von @@NESTLEVELCalling @@NESTLEVEL

Das folgende Beispiel zeigt die unterschiedlichen Werte, die von SELECT, EXECund sp_executesql zurückgegeben werden, wenn jeweils @@NESTLEVEL aufgerufen wird.The following example shows the difference in values returned by SELECT, EXEC, and sp_executesql when each of them calls @@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  

Hier ist das Resultset.Here is the result set.

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

Weitere InformationenSee Also

Konfigurationsfunktionen (Transact-SQL) Configuration Functions (Transact-SQL)
Erstellen einer gespeicherten Prozedur Create a Stored Procedure
@@TRANCOUNT (Transact-SQL)@@TRANCOUNT (Transact-SQL)