Di SQL Server, Anda dapat menggunakan sp_set_session_context
prosedur tersimpan untuk menyetel pasangan kunci/nilai dalam konteks sesi.
Pasangan kunci/nilai ini kemudian tetap berada dalam konteks sesi Anda sampai koneksi Anda ke SQL Server ditutup. Anda dapat menggunakan nilai-nilai ini dalam prosedur tersimpan dan kode T-SQL lainnya sepanjang masa sesi Anda.
Metode untuk mempertahankan status sesi ini pertama kali diperkenalkan di SQL Server 2016. Sebelum rilis itu, Anda harus menggunakan SET CONTEXT_INFO
, yang menyediakan cara yang serupa, tetapi jauh lebih terbatas untuk menyimpan status sesi.
Contoh 1 – Tetapkan Nilainya
Berikut adalah contoh untuk mendemonstrasikan cara menggunakan sp_set_session_context
untuk menyetel pasangan kunci/nilai.
EXEC sp_set_session_context @key = N'user_id', @value = 15;
Anda juga dapat menggunakan sintaks berikut:
EXEC sp_set_session_context 'user_id', 15;
Ada juga flag read-only opsional yang dapat Anda atur. Lihat di bawah untuk contohnya.
Contoh 2 – Baca Nilainya
Anda dapat menggunakan SESSION_CONTEXT()
berfungsi untuk membaca nilai dari sebuah kunci.
Berikut cara membaca nilai yang saya tetapkan pada contoh sebelumnya.
SELECT SESSION_CONTEXT(N'user_id') AS user_id;
Hasil:
+-----------+ | user_id | |-----------| | 15 | +-----------+
Contoh 3 – Perbarui Nilainya
Anda dapat memperbarui nilainya, selama Anda belum menetapkannya sebagai hanya-baca.
EXEC sp_set_session_context 'user_id', 73; SELECT SESSION_CONTEXT(N'user_id') AS user_id;
Hasil:
+-----------+ | user_id | |-----------| | 73 | +-----------+
Contoh 4 – Setel ke Hanya-Baca
Seperti yang disebutkan, ada juga tanda baca-saja opsional yang dapat Anda atur. Nilai 1
set ke read-only, dan nilai 0
(default) tidak hanya-baca.
Jika Anda menyetelnya ke hanya-baca, Anda tidak akan dapat memperbarui nilai tanpa memutuskan dan menyambungkan kembali ke SQL Server.
Berikut ini contoh pengaturan flag read-only.
EXEC sp_set_session_context @key = N'user_id', @value = 15, @read_only = 1; SELECT SESSION_CONTEXT(N'user_id') AS user_id;
Hasil:
+-----------+ | user_id | |-----------| | 15 | +-----------+
Sekarang, mari kita coba ubah nilainya:
EXEC sp_set_session_context 'user_id', 73;
Hasil:
Msg 15664, Level 16, State 1, Line 1 Cannot set key 'user_id' in the session context. The key has been set as read_only for this session.