SQL वेरिएबल्स: SQL सर्वर में वेरिएबल घोषित करना, सेट करना और चुनना
⚡ स्मार्ट सारांश
SQL सर्वर में वेरिएबल्स नाम वाले ऑब्जेक्ट होते हैं जो मेमोरी में एक डेटा मान के लिए प्लेसहोल्डर के रूप में कार्य करते हैं। किसी वेरिएबल को मान असाइन करने और पुनः उपयोग करने से पहले उसे DECLARE स्टेटमेंट के साथ घोषित करना आवश्यक है।

SQL सर्वर में वेरिएबल क्या है?
In एमएस SQL सर्वरवेरिएबल ऐसे ऑब्जेक्ट होते हैं जो मेमोरी लोकेशन के लिए प्लेसहोल्डर के रूप में कार्य करते हैं। एक वेरिएबल एक सिंगल डेटा वैल्यू रखता है जिसे आप बैच या प्रोसीजर में पढ़ और पुन: उपयोग कर सकते हैं।
SQL में चर प्रकार: स्थानीय, वैश्विक
एमएस एसक्यूएल सर्वर में दो प्रकार के वेरिएबल होते हैं:
- स्थानीय चर
- वैश्विक चर
हालांकि, उपयोगकर्ता केवल स्थानीय चर ही बना सकता है। नीचे दिया गया चित्र एमएस एसक्यूएल सर्वर में उपलब्ध दो प्रकार के चरों को दर्शाता है।
स्थानीय चर
- उपयोगकर्ता स्थानीय चर घोषित करता है।
- डिफ़ॉल्ट रूप से, एक स्थानीय चर का नाम @ से शुरू होता है।
- प्रत्येक स्थानीय चर किसी दिए गए सत्र के भीतर वर्तमान बैच या प्रक्रिया तक ही सीमित होता है।
वैश्विक चर
- सिस्टम वैश्विक चर को बनाए रखता है; उपयोगकर्ता इसे घोषित नहीं कर सकता।
- एक ग्लोबल वेरिएबल का नाम @@ से शुरू होता है।
- यह सत्र से संबंधित जानकारी संग्रहीत करता है।
SQL में किसी चर को कैसे घोषित करें?
किसी बैच या प्रक्रिया में किसी भी वेरिएबल का उपयोग करने से पहले एसक्यूएलआपको इसे घोषित करना होगा। DECLARE कमांड एक वेरिएबल बनाता है जो मेमोरी लोकेशन के लिए प्लेसहोल्डर के रूप में कार्य करता है। घोषणा हो जाने के बाद ही इस वेरिएबल का उपयोग बैच या प्रक्रिया के बाद के भाग में किया जा सकता है।
TSQL सिंटैक्स:
DECLARE { @LOCAL_VARIABLE[AS] data_type [ = value ] }
नियम:
- घोषणा करते समय आरंभीकरण वैकल्पिक है।
- डिफ़ॉल्ट रूप से, DECLARE वेरिएबल को NULL से इनिशियलाइज़ करता है।
- कीवर्ड 'AS' का प्रयोग वैकल्पिक है।
- एक से अधिक स्थानीय चर घोषित करने के लिए, पहली परिभाषा के बाद अल्पविराम लगाएं, फिर अगले चर का नाम दें और डाटा प्रकार.
चर घोषित करने के उदाहरण
प्रश्न: 'AS' के साथ
DECLARE @COURSE_ID AS INT;
प्रश्न: 'AS' के बिना
DECLARE @COURSE_NAME VARCHAR (10);
प्रश्न: दो चर घोषित करें
DECLARE @COURSE_ID AS INT, @COURSE_NAME VARCHAR (10);
SQL वेरिएबल को मान निर्दिष्ट करना
आप निम्नलिखित तीन तरीकों से किसी वेरिएबल को मान असाइन कर सकते हैं:
- DECLARE कीवर्ड का उपयोग करके वेरिएबल घोषित करते समय।
- SET का उपयोग करना।
- SELECT का उपयोग करना।
आइए इन तीनों तरीकों को विस्तार से देखें।
चर घोषणा के दौरान DECLARE कीवर्ड का उपयोग करना
टी-एसक्यूएल सिंटैक्स:
DECLARE { @Local_Variable [AS] Datatype [ = value ] }
यहां, डेटाटाइप के बाद आप '=' का उपयोग कर सकते हैं, जिसके बाद असाइन किया जाने वाला मान आता है।
प्रश्न:
DECLARE @COURSE_ID AS INT = 5 PRINT @COURSE_ID
क्वेरी चलाने पर घोषणा के दौरान असाइन किया गया मान प्रिंट होता है, जैसा कि नीचे दिखाया गया है।
SQL SET वेरिएबल का उपयोग करना
कभी-कभी आप घोषणा और आरंभीकरण को अलग रखना चाहते हैं। SET वेरिएबल की घोषणा के बाद उसे मान असाइन करता है। SET का उपयोग करके मान असाइन करने के विभिन्न तरीके नीचे दिए गए हैं।
उदाहरण: SET का उपयोग करके किसी वेरिएबल को मान असाइन करना
सिंटेक्स:
DECLARE @Local_Variable <Data_Type> SET @Local_Variable = <Value>
प्रश्न:
DECLARE @COURSE_ID AS INT SET @COURSE_ID = 5 PRINT @COURSE_ID
स्क्रिप्ट को निष्पादित करने पर SET के साथ असाइन किया गया मान वापस मिलता है, जैसा कि नीचे दिखाया गया है।
उदाहरण: SET का उपयोग करके एकाधिक चरों को मान असाइन करना
सिंटेक्स:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable_2 <Data_Type>, SET @Local_Variable_1 = <Value_1> SET @Local_Variable_2 = <Value_2>
नियम: एक SET कीवर्ड केवल एक वेरिएबल को ही मान निर्दिष्ट कर सकता है।
प्रश्न:
DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5) SET @COURSE_ID = 5 SET @COURSE_NAME = 'UNIX' PRINT @COURSE_ID PRINT @COURSE_NAME
नीचे दिखाए अनुसार, दोनों PRINT स्टेटमेंट असाइन किए गए मानों को लौटाते हैं।
उदाहरण: SET का उपयोग करके स्केलर सबक्वेरी के साथ किसी वेरिएबल को मान असाइन करना
सिंटेक्स:
DECLARE @Local_Variable_1 <Data_Type>, @Local_Variable_2 <Data_Type>,SET @Local_Variable_1 = (SELECT <Column_1> from <Table_Name> where <Condition_1>)
नियम:
- प्रश्न को कोष्ठकों में लिखें।
- यह क्वेरी स्केलर क्वेरी होनी चाहिए, जिसका अर्थ है कि यह केवल एक पंक्ति और एक कॉलम लौटाती है। अन्यथा, क्वेरी त्रुटि उत्पन्न करेगी।
- यदि क्वेरी शून्य पंक्तियाँ लौटाती है, तो वेरिएबल को EMPTY यानी NULL पर सेट कर दिया जाता है।
मान लीजिए कि हमारे पास है तालिका नामित 'Guruनीचे दिखाए गए अनुसार, दो स्तंभों वाली तालिका '99' का उपयोग किया गया है। इस तालिका का उपयोग निम्नलिखित उदाहरणों में किया गया है।
उदाहरण 1: जब सबक्वेरी परिणाम के रूप में एक पंक्ति लौटाती है
DECLARE @COURSE_NAME VARCHAR (10) SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 3) PRINT @COURSE_NAME
क्योंकि सबक्वेरी एक मेल खाने वाली पंक्ति लौटाती है, इसलिए वेरिएबल को वह मान प्राप्त होता है, जैसा कि नीचे दिखाया गया है।
उदाहरण 2: जब सबक्वेरी परिणाम स्वरूप शून्य पंक्तियाँ लौटाती है
DECLARE @COURSE_NAME VARCHAR (10) SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5) PRINT @COURSE_NAME
क्योंकि सबक्वेरी कोई पंक्ति नहीं लौटाती है, इसलिए वेरिएबल का मान खाली है, यानी NULL है, इसलिए कुछ भी प्रिंट नहीं होता है, जैसा कि नीचे दिखाया गया है।
SQL SELECT वेरिएबल का उपयोग करना
SET की तरह ही, DECLARE फ़ंक्शन का उपयोग करके वेरिएबल घोषित करने के बाद SELECT फ़ंक्शन का उपयोग करके भी उन्हें मान असाइन किए जा सकते हैं। नीचे SELECT का उपयोग करके मान असाइन करने के विभिन्न तरीके दिए गए हैं।
उदाहरण: SELECT का उपयोग करके किसी वेरिएबल को मान असाइन करना
सिंटेक्स:
DECLARE @LOCAL_VARIABLE <Data_Type> SELECT @LOCAL_VARIABLE = <Value>
प्रश्न:
DECLARE @COURSE_ID INT SELECT @COURSE_ID = 5 PRINT @COURSE_ID
SELECT असाइनमेंट नीचे दिखाए गए अनुसार मान को प्रिंट करता है।
उदाहरण: SELECT फ़ंक्शन का उपयोग करके एकाधिक चरों को मान निर्दिष्ट करना
सिंटेक्स:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Value_1>, @Local_Variable _2 = <Value_2>
नियम: SET के विपरीत, SELECT अल्पविराम से अलग किए गए कई चरों को मान निर्दिष्ट कर सकता है।
DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5) SELECT @COURSE_ID = 5, @COURSE_NAME = 'UNIX' PRINT @COURSE_ID PRINT @COURSE_NAME
नीचे दिखाए अनुसार, दोनों वेरिएबल्स को एक ही SELECT क्वेरी में असाइन किया जाता है।
उदाहरण: SELECT क्वेरी का उपयोग करके सबक्वेरी के माध्यम से किसी वेरिएबल को मान असाइन करना
सिंटेक्स:
DECLARE @Local_Variable_1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = (SELECT <Column_1> from <Table_name> where <Condition_1>)
नियम:
- प्रश्न को कोष्ठकों में लिखें।
- क्वेरी एक स्केलर क्वेरी होनी चाहिए जो एक पंक्ति और एक कॉलम लौटाए। अन्यथा, क्वेरी त्रुटि उत्पन्न करेगी।
- यदि क्वेरी शून्य पंक्तियाँ लौटाती है, तो वेरिएबल खाली है, यानी NULL है।
हमारे 'पर पुनर्विचार करें'Guru99' टेबल।
उदाहरण 1: जब सबक्वेरी परिणाम के रूप में एक पंक्ति लौटाती है
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 1) PRINT @COURSE_NAME
सबक्वेरी एक पंक्ति लौटाती है, इसलिए वेरिएबल उस मान को धारण करता है, जैसा कि नीचे दिखाया गया है।
उदाहरण 2: जब सबक्वेरी परिणाम स्वरूप शून्य पंक्तियाँ लौटाती है
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5) PRINT @COURSE_NAME
कोई मेल खाने वाली पंक्ति न होने पर, चर खाली रहता है, यानी NULL, जैसा कि नीचे दिखाया गया है।
उदाहरण 3: एक सामान्य SELECT स्टेटमेंट का उपयोग करके किसी वेरिएबल को मान असाइन करना
सिंटेक्स:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Column_1> from <Table_name> where <Condition_1>
नियम:
- SET के विपरीत, यदि क्वेरी कई पंक्तियाँ लौटाती है तो वेरिएबल का मान अंतिम पंक्ति के मान पर सेट किया जाता है।
- यदि क्वेरी शून्य पंक्तियाँ लौटाती है, तो वेरिएबल को EMPTY यानी NULL पर सेट कर दिया जाता है।
क्वेरी 1: यह क्वेरी एक पंक्ति लौटाती है।
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 3 PRINT @COURSE_NAME
मिलान करने वाली एकमात्र पंक्ति चर का मान निर्धारित करती है, जैसा कि नीचे दिखाया गया है।
क्वेरी 2: यह क्वेरी कई पंक्तियाँ लौटाती है।
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 PRINT @COURSE_NAME
जब कई पंक्तियाँ मेल खाती हैं, तो चर अंतिम पंक्ति से मान रखता है, जैसा कि नीचे दिखाया गया है।
प्रश्न 3: यह प्रश्न शून्य पंक्तियाँ लौटाता है।
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 5 PRINT @COURSE_NAME
जब कोई पंक्ति मेल नहीं खाती है, तो चर खाली होता है, यानी NULL होता है, जैसा कि नीचे दिखाया गया है।
अन्य SQL चर उदाहरण
एक घोषित वेरिएबल का उपयोग क्वेरी के अंदर भी किया जा सकता है, उदाहरण के लिए पंक्तियों को फ़िल्टर करने के लिए WHERE क्लॉज़ में।
प्रश्न:
DECLARE @COURSE_ID Int = 1 SELECT * from Guru99 where Tutorial_id = @COURSE_ID
यह वेरिएबल क्वेरी को फ़िल्टर करता है और मिलान करने वाली पंक्ति लौटाता है, जैसा कि नीचे दिखाया गया है।
SQL सर्वर वेरिएबल्स के बारे में रोचक तथ्य!
- लोकल वेरिएबल को PRINT और SELECT दोनों कमांड का उपयोग करके प्रदर्शित किया जा सकता है।
- टेबल डेटा प्रकार घोषणा के दौरान 'AS' के उपयोग की अनुमति नहीं देता है।
- SET, ANSI मानकों का अनुपालन करता है, जबकि SELECT नहीं करता है।
- @ नाम का एक स्थानीय चर बनाना भी अनुमत है। उदाहरण के लिए, इसे इस प्रकार घोषित किया जा सकता है:
'DECLARE @@ as VARCHAR (10)'















