@@NESTLEVEL (Transact-SQL)
Retourne le niveau d'imbrication de la procédure stockée en cours d'exécution (initialement 0) sur le serveur local.
S'applique à : SQL Server (SQL Server 2008 via la version actuelle, Base de données SQL Windows Azure (version initiale via la version actuelle. |
Conventions de la syntaxe Transact-SQL
Syntaxe
@@NESTLEVEL
Types des valeurs retournés
int
Notes
Chaque fois qu'une procédure stockée appelle une autre procédure stockée ou exécute du code managé en référençant une agrégation, un type ou une routine CLR (Common Language Runtime), le niveau d'imbrication est incrémenté. En cas de dépassement du maximum autorisé (32), la transaction s'arrête.
Lorsque @@NESTLEVEL est exécuté dans une chaîne Transact-SQL, la valeur renvoyée est 1, augmentée du niveau d'imbrication actuel. Lorsque @@NESTLEVEL est exécuté dynamiquement à l'aide de sp_executesql, la valeur retournée est 2, augmentée du niveau d'imbrication actuel.
Exemples
A.Utilisation de @@NESTLEVEL dans une procédure
L'exemple suivant crée deux procédures : une qui appelle l'autre et une qui affiche le paramètre @@NESTLEVEL de chacune d'entre elles.
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
Voici l'ensemble des résultats.
Outer Level
-----------
1
Inner Level
-----------
2
B.Appel de @@NESTLEVEL
L'exemple suivant montre la différence des valeurs retournées par les commandes SELECT, EXEC et sp_executesql lorsque chacune d'elles appelle @@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
Voici l'ensemble des résultats.
Current Nest Level
------------------
1
(1 row(s) affected)
OneGreater
-----------
2
(1 row(s) affected)
TwoGreater
-----------
3
(1 row(s) affected)
Voir aussi
Référence
Fonctions de configuration (Transact-SQL)