本文件已封存並已停止維護。
@@NESTLEVEL (Transact-SQL)
SQL Server 2005
傳回本機伺服器中執行目前預存程序的巢狀層級 (最初是 0)。如需巢狀層級的詳細資訊,請參閱<巢狀預存程序>。
A. 在程序中使用 @@NESTLEVEL
下列範例會建立兩個程序:一個程序呼叫另一個程序,一個程序顯示各程序的 @@NESTLEVEL 設定。
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
以下為結果集:
Outer Level ----------- 1 Inner Level ----------- 2
B. 呼叫 @@NESTLEVEL
下列範例會顯示 SELECT、EXEC 和 sp_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)
顯示:

