@@NESTLEVEL (Transact-SQL)
Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance
Devuelve el nivel de anidamiento de la ejecución del procedimiento almacenado actual (inicialmente 0) en el servidor local.
Convenciones de sintaxis de Transact-SQL
Sintaxis
@@NESTLEVEL
Nota:
Para ver la sintaxis de Transact-SQL para SQL Server 2014 (12.x) y versiones anteriores, consulte Versiones anteriores de la documentación.
Tipos de valor devuelto
int
Observaciones
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 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
El conjunto de resultados es el siguiente:
Outer Level
-----------
1
Inner Level
-----------
2
B. Llamar a @@NESTLEVEL
En el siguiente ejemplo se 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
El conjunto de resultados es el siguiente:
Current Nest Level
------------------
1
(1 row(s) affected)
OneGreater
-----------
2
(1 row(s) affected)
TwoGreater
-----------
3
(1 row(s) affected)
Consulte también
Funciones de configuración (Transact-SQL)
Crear un procedimiento almacenado
@@TRANCOUNT (Transact-SQL)
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de