Partager via


@@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.

Icône Lien de rubrique 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)

@@TRANCOUNT (Transact-SQL)

Concepts

Créer une procédure stockée