Compartilhar via


@@NESTLEVEL (Transact-SQL)

Retorna o nível aninhando da execução de procedimento armazenado atual (inicialmente 0) no servidor local.

Aplica-se a: SQL Server (SQL Server 2008 até a versão atual), Banco de dados SQL do Windows Azure (versão inicial até a versão atual).

Ícone de vínculo de tópico Convenções da sintaxe Transact-SQL

Sintaxe

@@NESTLEVEL

Tipos de retorno

int

Comentários

O nível é incrementado sempre que um procedimento armazenado chama outro procedimento armazenado ou executa código gerenciado fazendo referência a uma rotina, um tipo ou uma agregação CLR (Common Language Runtime). Quando o máximo de 32 for excedido, a transação será terminada.

Quando @@NESTLEVEL for executado em uma cadeia de caracteres Transact-SQL, o valor retornado será 1 + o nível de aninhamento atual. Quando @@NESTLEVEL for executado dinamicamente usando sp_executesql, o valor retornado será 2 + o nível de aninhamento atual.

Exemplos

A.Usando @@NESTLEVEL em um procedimento

O exemplo a seguir cria dois procedimentos: um que chama o outro e um que exibe a configuração @@NESTLEVEL de cada um deles.

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

Aqui está o conjunto de resultados.

Outer Level

-----------

1

Inner Level

-----------

2

B.Chamando @@NESTLEVEL

O exemplo a seguir mostra a diferença nos valores retornados por SELECT, EXEC e sp_executesql quando cada um deles chama @@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

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)

Consulte também

Referência

Funções de configuração (Transact-SQL)

@@TRANCOUNT (Transact-SQL)

Conceitos

Criar um procedimento armazenado