@@ nestlevel (Transact-SQL)

Geçerli saklı yordam yürütme iç içe geçmiş düzey döndürür (başlangıçta 0) yerel sunucuda.İç içe düzeyleri hakkında daha fazla bilgi için bkz: İç içe geçme saklı yordamları.

Konu bağlantısı simgesiTransact-SQL sözdizimi kuralları

Sözdizimi

@@NESTLEVEL

Dönüş Türleri

int

Açıklamalar

Her saat bir saklı yordam , başka bir saklı yordam çağırır veya bir ortak dil çalışma zamanı (clr) yordamı, türünü veya toplubaşvurarak yönetilen kod çalıştırır, iç içe geçmiş düzey artırılır.En fazla 32 aşıldığında, işlem sonlandırılır.

Ne zaman @@ nestlevel yürütüldüğünde içinde bir Transact-SQL dize, döndürülen değer iç içe olan 1 + geçerli geçirme düzey.Ne zaman @@ nestlevel yürütüldüğünde dinamik olarak kullanarak sp_executesql Döndürülen değer olan 2 + geçerli iç içe geçmiş düzey.

Örnekler

A.Bir yordam @@ nestlevel kullanma

Aşağıdaki örnek, iki yordam oluşturur: diğer çağıran ve görüntüleyen bir @@NESTLEVEL her bir ayarı.

USE AdventureWorks2008R2;
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ğerler arasındaki fark gösterilir SELECT, EXEC, ve sp_executesql , bunların her biri çağıran @@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

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)