@@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.
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 @@NESTLEVEL
EXEC
.
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)