@@NESTLEVEL (Transact-SQL)
Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure
Restituisce il livello di nidificazione dell'esecuzione corrente di stored procedure (il livello iniziale è 0) nel server locale.
Convenzioni relative alla sintassi Transact-SQL
Sintassi
@@NESTLEVEL
Tipi restituiti
int
Osservazioni:
Ogni volta che una stored procedure ne richiama un'altra oppure esegue codice gestito tramite un riferimento a una routine CLR, un tipo CLR o una funzione di aggregazione CLR, il livello di nidificazione viene incrementato. Quando viene superato il livello massimo pari a 32, la transazione viene interrotta.
Se la funzione @@NESTLEVEL viene eseguita all'interno di una stringa Transact-SQL, il valore restituito è 1 + il livello di nidificazione corrente. Quando @@NESTLEVEL viene eseguito in modo dinamico usando sp_executesql il valore restituito è 2 + il livello di annidamento corrente.
Esempi
R. Uso di @@NESTLEVEL in una procedura
Nell'esempio seguente vengono create due procedure: una procedura che richiama l'altra e una che visualizza le impostazioni della funzione @@NESTLEVEL
di ciascuna procedura.
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
Il set di risultati è il seguente.
Outer Level
-----------
1
Inner Level
-----------
2
B. Chiamata di @@NESTLEVEL
Nell'esempio seguente viene illustrata la differenza dei valori restituiti dalle istruzioni SELECT
, EXEC
e sp_executesql
quando ogni istruzione richiama la funzione @@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
Il set di risultati è il seguente.
Current Nest Level
------------------
1
(1 row(s) affected)
OneGreater
-----------
2
(1 row(s) affected)
TwoGreater
-----------
3
(1 row(s) affected)
Vedi anche
Funzioni di configurazione (Transact-SQL)
Creazione di una stored procedure
@@TRANCOUNT (Transact-SQL)