@@NESTLEVEL (T-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Mengembalikan tingkat berlapis dari eksekusi prosedur tersimpan saat ini (awalnya 0) di server lokal.

Konvensi sintaks transact-SQL

Sintaksis

@@NESTLEVEL  

Catatan

Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 (12.x) dan versi yang lebih lama, lihat Dokumentasi versi sebelumnya.

Jenis Kembalian

int

Keterangan

Setiap kali prosedur tersimpan memanggil prosedur tersimpan lain atau menjalankan kode terkelola dengan merujuk rutinitas, jenis, atau agregat runtime bahasa umum (CLR), tingkat bersarang akan bertambah. Ketika maksimum 32 terlampaui, transaksi dihentikan.

Saat @@NESTLEVEL dijalankan dalam string Transact-SQL, nilai yang dikembalikan adalah 1 + tingkat berlapis saat ini. Ketika @@NESTLEVEL dijalankan secara dinamis dengan menggunakan sp_executesql nilai yang dikembalikan adalah 2 + tingkat berlapis saat ini.

Contoh

J. Menggunakan @@NESTLEVEL dalam prosedur

Contoh berikut membuat dua prosedur: satu yang memanggil yang lain, dan yang menampilkan @@NESTLEVEL pengaturan masing-masing.

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  

Berikut adalah hasil yang ditetapkan.

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

B. Memanggil @@NESTLEVEL

Contoh berikut menunjukkan perbedaan nilai yang dikembalikan oleh SELECT, , dan sp_executesql ketika masing-masing memanggil @@NESTLEVELEXEC.

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  

Berikut adalah hasil yang ditetapkan.

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

Lihat Juga

Fungsi Konfigurasi (Transact-SQL)
Membuat Prosedur Tersimpan
@@TRANCOUNT (T-SQL)