MySQL संग्रहीत कार्यविधियों को लिखना और उपयोग करने से पहले हमारे पास निम्नलिखित पूर्वापेक्षाएँ होनी चाहिए -
MySQL संस्करण
जैसा कि हम जानते हैं कि MySQL 5 ने संग्रहीत कार्यविधियाँ पेश की हैं, इसलिए सबसे पहले हमें लिखने और संग्रहीत कार्यविधियों का उपयोग करने से पहले MySQL के संस्करण की जाँच करने की आवश्यकता है। यह निम्नलिखित क्वेरी के साथ किया जा सकता है -
mysql> Select VERSION(); +-----------+ | VERSION() | +-----------+ | 5.7.20 | +-----------+ 1 row in set (0.10 sec)
वर्तमान उपयोगकर्ता के लिए विशेषाधिकार
असल में, CREATE PROCEDURE और CREATE FUNCTION के लिए CREATE ROUTINE विशेषाधिकार की आवश्यकता होती है। डिफ़ॉल्ट रूप से, MySQL स्वचालित रूप से नियमित निर्माता को ALTER ROUTINE और EXECUTE विशेषाधिकार प्रदान करता है। इस व्यवहार को auto_sp_privileges सिस्टम चर को अक्षम करके बदला जा सकता है। वर्तमान उपयोगकर्ता के विशेषाधिकारों को निम्न क्वेरी के साथ जांचा जा सकता है -
mysql> SHOW PRIVILEGES
डेटाबेस का चयन करना
एक प्रक्रिया बनाने से पहले हमें उपलब्ध डेटाबेस से एक डेटाबेस का चयन करना होगा। यह निम्नलिखित प्रश्न की सहायता से किया जा सकता है -
mysql> USE query; Database changed
उपरोक्त क्वेरी से, यह स्पष्ट है कि हम 'क्वेरी' नामक डेटाबेस का उपयोग कर रहे हैं।
DELIMITER चुनना
सीमांकक वर्णों का वह वर्ण या स्ट्रिंग है जिसका उपयोग SQL कथन को पूरा करने के लिए किया जाता है। डिफ़ॉल्ट रूप से, हम एक अर्धविराम (;) को एक सीमांकक के रूप में उपयोग करते हैं। लेकिन यह संग्रहीत प्रक्रियाओं में एक समस्या का कारण बनता है क्योंकि एक प्रक्रिया में कई कथन हो सकते हैं, और सभी को अर्धविराम के साथ समाप्त होना चाहिए। तो अपने डिलीमीटर के लिए, एक स्ट्रिंग चुनें जो शायद ही कभी किसी कथन के भीतर या प्रक्रिया के भीतर होती है। हम डबल बैकस्लैश // या डबल डॉलर के संकेत चुन सकते हैं $$ या हमारी पसंद का कोई अन्य सीमांकक। यह निम्नलिखित प्रश्न की सहायता से किया जा सकता है -
mysql> DELIMITER // ;
अब, डिफ़ॉल्ट सीमांकक को // चिह्न में बदल दिया गया है और इसे निम्न क्वेरी से जांचा जा सकता है -
mysql> Select * from student_info // +------+---------+------------+------------+ | id | Name | Address | Subject | +------+---------+------------+------------+ | 100 | Aarav | Delhi | Computers | | 101 | YashPal | Amritsar | History | | 105 | Gaurav | Jaipur | Literature | | 110 | Rahul | Chandigarh | History | +------+---------+------------+------------+ 4 rows in set (0.00 sec)