@@NESTLEVEL (Transact-SQL)

Devuelve el nivel de anidamiento de la ejecución del procedimiento almacenado actual (inicialmente 0) en el servidor local. Para obtener más información acerca de los niveles de anidamiento, vea Anidar procedimientos almacenados.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

@@NESTLEVEL

Tipos de valor devueltos

int

Notas

Cada vez que un procedimiento almacenado llama a otro procedimiento almacenado o ejecuta un código administrado haciendo referencia a una rutina Common Language Runtime (CLR), un tipo o un agregado, se incrementa el nivel de anidamiento. Cuando se sobrepasa el máximo de 32, se termina la transacción.

Cuando se ejecuta @@NESTLEVEL en una cadena de Transact-SQL, el valor devuelto es 1 + el nivel de anidamiento actual. Cuando se ejecuta @@NESTLEVEL de forma dinámica con sp_executesql, el valor devuelto es 2 + el nivel de anidamiento actual.

Ejemplos

A. Usar @@NESTLEVEL en un procedimiento

En el ejemplo siguiente se crean dos procedimientos: uno que llama al otro y uno que muestra el valor @@NESTLEVEL de cada uno.

USE AdventureWorks;
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

Éste es el conjunto de resultados.

Outer Level
-----------
1          

Inner Level
-----------
2

B. Llamar a @@NESTLEVEL

El ejemplo siguiente muestra la diferencia en los valores devueltos por SELECT, EXEC y sp_executesql cuando cada uno de ellos llama a @@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

Éste es el conjunto de resultados.

Current Nest Level 
------------------ 
1

(1 row(s) affected)

OneGreater  
----------- 
2

(1 row(s) affected)

TwoGreater  
----------- 
3

(1 row(s) affected)

Vea también

Referencia

Funciones de configuración (Transact-SQL)
@@TRANCOUNT (Transact-SQL)

Otros recursos

Crear procedimientos almacenados (motor de base de datos)

Ayuda e información

Obtener ayuda sobre SQL Server 2005