Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Base de dados SQL no Microsoft Fabric
Devolve o nível de aninhamento da execução atual do procedimento armazenado (inicialmente 0) no servidor local.
Transact-SQL convenções de sintaxe
Sintaxe
@@NESTLEVEL
Tipos de devolução
int
Observações
Cada vez que um procedimento armazenado chama outro procedimento armazenado ou executa código gerido referenciando uma rotina, tipo ou agregado de common language runtime (CLR), o nível de aninhamento é incrementado. Quando o máximo de 32 é ultrapassado, a transação é terminada.
Quando @@NESTLEVEL é executado dentro de uma cadeia de Transact-SQL, o valor devolvido é 1 + o nível de aninhamento atual. Quando @@NESTLEVEL é executado dinamicamente usando sp_executesql o valor devolvido é 2 + o nível atual de aninhamento.
Examples
A. Usar @@NESTLEVEL num procedimento
O exemplo seguinte cria dois procedimentos: um que chama o outro e outro que mostra a @@NESTLEVEL definição de cada um.
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
Aqui está o conjunto de resultados.
Outer Level
-----------
1
Inner Level
-----------
2
B. A chamar @@NESTLEVEL
O exemplo seguinte mostra a diferença nos valores devolvidos por SELECT, , e sp_executesql quando cada um deles chama @@NESTLEVELEXEC.
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
Aqui está o conjunto de resultados.
Current Nest Level
------------------
1
(1 row(s) affected)
OneGreater
-----------
2
(1 row(s) affected)
TwoGreater
-----------
3
(1 row(s) affected)
Ver também
Funções de configuração (Transact-SQL)
criar um procedimento armazenado
@@TRANCOUNT (Transact-SQL)