@@NESTLEVEL (SQL bertransaksi)
Berlaku untuk:
SQL Server (semua versi yang didukung)
Azure SQL Database
Azure SQL Managed Instance
Mengembalikan tingkat bersarang dari eksekusi prosedur tersimpan saat ini (awalnya 0) pada server lokal.
Sintaks
@@NESTLEVEL
Catatan
Untuk melihat sintaks transact-SQL untuk SQL Server 2014 dan yang lebih lama, lihat Dokumentasi versi sebelumnya.
Jenis Pengembalian
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 bersarang saat ini. Ketika @@NESTLEVEL dijalankan secara dinamis dengan menggunakan sp_executesql nilai yang dikembalikan adalah 2 + tingkat bersarang saat ini.
Contoh
A. Menggunakan @@NESTLEVEL dalam prosedur
Contoh berikut membuat dua prosedur: satu yang memanggil yang lain, dan yang menampilkan @@NESTLEVEL pengaturan masing-masing.
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
Berikut adalah tataan hasil.
Outer Level
-----------
1
Inner Level
-----------
2
B. Memanggil @@NESTLEVEL
Contoh berikut menunjukkan perbedaan nilai yang dikembalikan oleh SELECT, , dan sp_executesql ketika masing-masing dari mereka 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 (SQL T-SQL)
Membuat Prosedur Tersimpan
@@TRANCOUNT (SQL Bertransaksi)
