SQL सर्वर में, आप SESSION_CONTEXT()
. का उपयोग कर सकते हैं वर्तमान सत्र के संदर्भ में निर्दिष्ट कुंजी के मान को पढ़ने के लिए कार्य करता है।
कुंजी (कुंजी/मूल्य जोड़ी) को पहले सेट करने की आवश्यकता है। यह sp_set_session_context
. के साथ किया जा सकता है संग्रहीत प्रक्रिया।
सत्र के लिए कुंजी/मान युग्म सेट हो जाने के बाद, आप SESSION_CONTEXT()
का उपयोग कर सकते हैं उस कुंजी का मान वापस करने के लिए।
उदाहरण 1 - मान सेट करें और वापस करें
यहां एक उदाहरण दिया गया है जो मूल अवधारणा और उपयोग को प्रदर्शित करता है।
EXEC sp_set_session_context @key =N'user_id', @value =15;SESSION_CONTEXT(N'user_id') AS user_id चुनें;
परिणाम:
+-----------+| user_id ||---------------|| 15 |+----------+
उदाहरण 2 - जब कोई कुंजी मौजूद न हो
यहां बताया गया है कि यदि आप किसी ऐसी कुंजी से मान प्राप्त करने का प्रयास करते हैं जो मौजूद नहीं है।
उफ़ के रूप मेंSESSION_CONTEXT(N'oops') चुनें;
परिणाम:
+----------+| उफ़ ||-----------|| NULL |+----------+
उदाहरण 3 - "N" उपसर्ग
SESSION_CONTEXT()
. को दिया गया तर्क sysname . प्रकार का है . मूल रूप से, यह nvarchar(128) NOT NULL
. जैसा ही है , जिसका अर्थ है कि आपको N
. के साथ तर्क को उपसर्ग करना होगा चरित्र।
अगर मैं N
को हटा दूं तो यहां क्या होगा उपसर्ग:
EXEC sp_set_session_context @key ='भाषा', @value ='अंग्रेज़ी'; भाषा के रूप में SESSION_CONTEXT ('भाषा') चुनें;
परिणाम:
Msg 8116, Level 16, State 1, Line 5Argument डेटा प्रकार varchar session_context फ़ंक्शन के तर्क 1 के लिए अमान्य है।
N
. को हटाकर उपसर्ग, मैं बस एक varchar . में गुजर रहा हूं , जब यह nvarchar होना चाहिए (या sysname सटीक होना)।
यहाँ यह N
. के साथ है उपसर्ग:
EXEC sp_set_session_context @key =N'language', @value ='English'; SESSION_CONTEXT(N'language') AS भाषा चुनें;
परिणाम:
+---------------+| भाषा ||---------------|| अंग्रेज़ी |+---------------+
उदाहरण 4 - वापसी मूल्य
वापसी प्रकार SESSION_CONTEXT()
sql_variant है .
आप SQL_VARIANT_PROPERTY()
. का उपयोग कर सकते हैं आधार प्रकार का पता लगाने के लिए कार्य करें।
उदाहरण:
SQL_VARIANT_PROPERTY(SESSION_CONTEXT(N'user_id'), 'BaseType' ) AS user_id, SQL_VARIANT_PROPERTY(SESSION_CONTEXT(N'language'), 'BaseType' ) AS भाषा चुनें;
परिणाम:
+-----------+---------------+| user_id | भाषा ||-----------+---------------|| इंट | वर्कर |+-----------+---------------+
उदाहरण 5 - वापसी मूल्यों को जोड़ना
यदि आपको अनेक परिणामों को संयोजित करने की आवश्यकता है, तो आपको परिणामों को sql_variant के अलावा किसी अन्य डेटा प्रकार में बदलना होगा प्रथम।
अगर मैं ऐसा नहीं करता तो क्या होता है इसका एक उदाहरण यहां दिया गया है:
उदाहरण:
EXEC sp_set_session_context N'user_fname', 'Homer';EXEC sp_set_session_context N'user_lname', 'Simpson';SELECT CONCAT(SESSION_CONTEXT(N'user_fname'), SESSION_CONTEXT(N'user_lname') पूर्व) परिणाम के रूप में;>परिणाम:
Msg 257, Level 16, State 3, Line 1डेटा प्रकार sql_variant से varchar में लागू रूपांतरण की अनुमति नहीं है। इस क्वेरी को चलाने के लिए CONVERT फ़ंक्शन का उपयोग करें।इसलिए मुझे
CAST()
. का उपयोग करके परिणामों को स्पष्ट रूप से परिवर्तित करने की आवश्यकता है याCONVERT()
उन्हें जोड़ने से पहले।उदाहरण:
EXEC sp_set_session_context N'user_fname', 'Homer';EXEC sp_set_session_context N'user_lname', 'Simpson'; CONCAT(CAST(SESSION_CONTEXT(N'user_fname') AS varchar(5)), CAST(SESSION_CONTEXT(N'CONTEXT) चुनें user_lname') AS varchar(7)) ) AS परिणाम;परिणाम:
+--------------+| परिणाम ||--------------|| होमर सिम्पसन |+--------------+