@@ nestlevel (Transact-sql)

Geçerli saklı yordamı yürütme seviyesini döndürür (başlangıçta 0) yerel sunucuda.

Konu bağlantısı simgesi 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)

@@ trancount (Transact-sql)

Kavramlar

Saklı yordam oluşturma