Aracılığıyla paylaş


@@NESTLEVEL (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiMicrosoft Fabric'te SQL veritabanı

Yerel sunucuda mevcut depolanmış prosedür yürütme aşamasının (başlangıçta 0) iç içe geçme seviyesini döndürür.

Transact-SQL söz dizimi kuralları

Sözdizimi

@@NESTLEVEL  

Dönüş Türleri

int

Açıklamalar

Her bir depolanmış prosedür başka bir depolanmış prosedürü çağırdığında veya yönetilen kodu ortak dil çalışma zamanı (CLR) rutinine, türüne veya agregasına atıfta bulunarak çalıştırdığında, iç içleme seviyesi artırılır. Maksimum 32 aşıldığında işlem sonlandırılır.

@@NESTLEVEL bir Transact-SQL dizisi içinde çalıştırıldığında, döndürülen değer 1 + mevcut iç içe geçirme seviyesidir. @@NESTLEVEL dinamik olarak sp_executesql kullanılarak yürütüldüğünde geri dönen değer 2 + mevcut iç içleme seviyesidir.

Örnekler

A. Bir işlemde @@NESTLEVEL kullanmak

Aşağıdaki örnek iki prosedür oluşturur: biri diğerini çağırır, diğeri ise her birinin ayarlarını @@NESTLEVEL gösterir.

USE AdventureWorks2022;  
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 aşağıdadır.

Outer Level  
-----------  
1  
 
Inner Level  
-----------  
2

B. Çağrı @@NESTLEVEL

Aşağıdaki örnek, , EXEC, ile ile döndürülen SELECTdeğerler arasındaki farkı gösterir ve sp_executesql her biri ç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  

Sonuç kümesi aşağıdadır.

Current Nest Level  
------------------  
1  
 
(1 row(s) affected)  
 
OneGreater  
-----------  
2  
 
(1 row(s) affected)  
 
TwoGreater  
-----------  
3  
 
(1 row(s) affected)

Ayrıca Bkz.

Yapılandırma İşlevleri (Transact-SQL)
Saklı Prosedür Oluştur
@@TRANCOUNT (Transact-SQL)