@variable
MySQL में सिंटैक्स उपयोगकर्ता द्वारा परिभाषित सत्र चर को दर्शाता है। आप इन उपयोगकर्ता चर को एक संग्रहीत कार्यविधि के बाहर सेट कर सकते हैं, लेकिन आप उन्हें एक संग्रहीत कार्यविधि के अंदर भी सेट कर सकते हैं, और प्रभाव यह है कि चर आपकी प्रक्रिया कॉल रिटर्न के बाद मान को बरकरार रखता है।
तो आपके उदाहरण में, निम्नलिखित भी वही काम करेंगे:
CREATE PROCEDURE emp_count_2()
BEGIN
SELECT COUNT(*) INTO @empCount FROM Employee;
END
CALL emp_count_2(); /* sets @empCount as a side-effect */
SELECT @empCount;
कई सत्रों के लिए उपयोगकर्ता चर को एक साथ इस तरह से सेट करना ठीक है, क्योंकि उपयोगकर्ता चर एक ही सत्र के दायरे में हैं, और समवर्ती सत्रों में एक ही नाम के चर हो सकते हैं, लेकिन अलग-अलग मानों के साथ।
@ उपसर्ग के साथ चर सिंटैक्स, प्रक्रिया के लिए स्थानीय चर के लिए है, या तो प्रक्रिया पैरामीटर, या फिर घोषणा प्रक्रिया निकाय के भीतर।
यदि आप किसी प्रक्रिया को कई बार कॉल करना चाहते हैं और परिणाम को अलग-अलग उपयोगकर्ता चर में संग्रहीत करना चाहते हैं तो यह उपयोग आपके पास है, एक उपयोगकर्ता चर को एक पैरामीटर के रूप में पारित करना और इसे प्रक्रिया के मुख्य भाग में निर्दिष्ट करना उपयोगी है। अन्यथा प्रक्रिया के लिए प्रत्येक कॉल वर्तमान सत्र के लिए @empCount उपयोगकर्ता चर में पिछले मान को अधिलेखित कर देगी।