Bagikan melalui


@@NESTLEVEL (T-SQL)

Berlaku untuk: SQL ServerAzure SQL Database Azure SQL Managed Instance

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

Konvensi sintaks transact-SQL

Sintaks

@@NESTLEVEL  

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 set hasilnya.

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 set hasilnya.

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)