문서를 영문으로 보려면 영문 확인란을 선택하세요. 마우스 포인터를 텍스트 위로 이동시켜 팝업 창에서 영문 텍스트를 표시할 수도 있습니다.
번역
영문

@@NESTLEVEL(Transact-SQL)

로컬 서버의 현재 저장 프로시저 실행의 중첩 수준을 반환합니다(초기값 0).

항목 링크 아이콘 Transact-SQL 구문 표기 규칙

@@NESTLEVEL

저장 프로시저가 다른 저장 프로시저를 호출하거나 CLR(공용 언어 런타임) 루틴, 유형 또는 집계를 참조하여 관리 코드를 실행할 때마다 중첩 수준이 증가합니다. 최대값 32를 초과하면 트랜잭션이 종료됩니다.

@@NESTLEVEL이 Transact-SQL 문자열 내에서 실행되는 경우 현재 중첩 수준 + 1 값이 반환됩니다. sp_executesql을 사용하여 @@NESTLEVEL이 동적으로 실행되는 경우 현재 중첩 수준 + 2 값이 반환됩니다.

1.프로시저에서 @@NESTLEVEL 사용

다음 예에서는 두 개의 프로시저를 만듭니다. 하나는 다른 프로시저를 호출하고 또 하나는 각각의 @@NESTLEVEL 설정을 표시합니다.

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

결과 집합은 다음과 같습니다.

Outer Level

-----------

1

Inner Level

-----------

2

2.@@NESTLEVEL 호출

다음 예에서는 SELECT, EXECsp_executesql에서 각각 @@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

결과 집합은 다음과 같습니다.

Current Nest Level

------------------

1

(1 row(s) affected)

OneGreater

-----------

2

(1 row(s) affected)

TwoGreater

-----------

3

(1 row(s) affected)

표시: