@@ nestlevel (Transact-sql)
Geçerli saklı yordamı yürütme seviyesini döndürür (başlangıçta 0) yerel sunucuda.
Transact-SQL Sözdizim Kuralları
Sözdizimi
@@NESTLEVEL
Dönüş Türleri
int
Açıklamalar
Başka bir saklı yordam çağrıları her zaman saklı yordam veya bir ortak dil çalışma zamanı (clr) rutin, türü veya toplama başvuran tarafından yönetilen kod çalıştırır, seviyesini artırılır. En fazla 32 aşıldığında, işlem sonlandırılır.
Ne zaman @@ nestlevel içinde yürütüldüğünde bir Transact-SQLdize değerini döndürdü olup 1 + geçerli yuvalama seviyesi. Ne zaman @@ nestlevel yürütüldüğünde dinamik olarak kullanarak sp_executesqldeğeri döndürülür 2 + mevcut seviyesini.
Örnekler
A.Bir yordam @@ nestlevel kullanma
Aşağıdaki örnek, iki yordam oluşturur: diğer çağıran ve görüntüleyen bir @@NESTLEVELher bir ayarı.
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
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
Sonuç kümesi buradadır.
Outer Level
-----------
1
Inner Level
-----------
2
B.@@ nestlevel çağırma
Aşağıdaki örnek tarafından döndürülen değerleri arasındaki farkı gösterir SELECT, EXEC, ve sp_ executesql her çağırdığında @@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
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
Sonuç kümesi buradadır.
Current Nest Level
------------------
1
(1 row(s) affected)
OneGreater
-----------
2
(1 row(s) affected)
TwoGreater
-----------
3
(1 row(s) affected)
Ayrıca bkz.
Başvuru
Yapılandırma işlevler (Transact-sql)