यह आलेख वर्णन करता है कि आपके A2 होस्टिंग खाते पर MySQL संग्रहीत कार्यों और प्रक्रियाओं को कैसे बनाया और निष्पादित किया जाए। आप परिदृश्यों की एक विस्तृत श्रृंखला के लिए संग्रहीत कार्यों और प्रक्रियाओं का उपयोग कर सकते हैं। उदाहरण के लिए, अच्छी तरह से डिज़ाइन किए गए संग्रहीत कार्य और प्रक्रियाएं डेटाबेस सुरक्षा को बढ़ा सकती हैं, डेटा अखंडता में सुधार कर सकती हैं और प्रदर्शन बढ़ा सकती हैं।
संग्रहीत कार्य
MySQL संग्रहीत कार्य डेटा में हेरफेर और संसाधित करने के लिए एक शक्तिशाली और लचीला तरीका प्रदान करते हैं। आप MySQL का उपयोग करने वाले किसी भी A2 होस्टिंग सर्वर पर संग्रहीत कार्यों को परिभाषित और चला सकते हैं।
एक परीक्षण डेटाबेस सेट करना
संग्रहीत कार्यों का एक मूल उदाहरण प्रदर्शित करने के लिए, आइए एक डेटाबेस बनाकर शुरू करें जिसका उपयोग हम परीक्षण उद्देश्यों के लिए कर सकते हैं। निम्न SQL कथन में, उपयोगकर्ता नाम को बदलें आपके खाते के उपयोगकर्ता नाम के साथ:
CREATE DATABASE username_test;आप MySQL टूल का उपयोग करके कमांड लाइन से या phpMyAdmin का उपयोग करके अपने वेब ब्राउज़र में पिछले SQL कमांड (और निम्न SQL कमांड) को चला सकते हैं।
यदि आप phpMyAdmin का उपयोग कर रहे हैं, तो उपयोगकर्ता नाम . नाम पर क्लिक करें डेटाबेस का चयन करने के लिए _test। अन्यथा, यदि आप mysql कमांड-लाइन प्रोग्राम का उपयोग कर रहे हैं, तो निम्न SQL कथन टाइप करें:
USE username_test;
इसके बाद, उपयोगकर्ता नाम . में एक तालिका बनाएं _परीक्षण उत्पादों . नाम का डेटाबेस . ऐसा करने के लिए, निम्न SQL कथन चलाएँ:
CREATE TABLE products (prod_id INT NOT NULL AUTO_INCREMENT, prod_name VARCHAR(20) NOT NULL, prod_cost FLOAT NOT NULL DEFAULT 0.0, prod_price FLOAT NOT NULL DEFAULT 0.0, PRIMARY KEY(prod_id));
निम्न SQL कथन उत्पादों में कुछ नमूना डेटा जोड़ता है तालिका:
INSERT INTO products (prod_name, prod_cost, prod_price) VALUES ('Basic Widget',5.95,8.35),('Micro Widget',0.95,1.35),('Mega Widget',99.95,140.00);
संग्रहीत फ़ंक्शन बनाना
अब जब हमारे पास काम करने के लिए एक डेटाबेस और एक टेबल है, तो हम एक संग्रहीत फ़ंक्शन बनाने के लिए तैयार हैं। आइए calcProfit . नामक एक फ़ंक्शन बनाएं . यह फ़ंक्शन दो इनपुट पैरामीटर लेता है:किसी चीज़ की लागत और कीमत। यह मूल्य से लागत घटाकर लाभ की गणना करता है, और फिर मूल्य को कॉलिंग एक्सप्रेशन पर लौटाता है।
इस संग्रहीत फ़ंक्शन को बनाने के लिए, निम्नलिखित MySQL कथन चलाएँ:
DELIMITER $$ CREATE FUNCTION calcProfit(cost FLOAT, price FLOAT) RETURNS DECIMAL(9,2) BEGIN DECLARE profit DECIMAL(9,2); SET profit = price-cost; RETURN profit; END$$ DELIMITER ;DELIMITER इन कथनों की शुरुआत में कमांड MySQL को फ़ंक्शन परिभाषा को बहुत जल्द संसाधित करने से रोकता है। DELIMITER इन कथनों के अंत में कमांड सामान्य रूप से प्रसंस्करण लौटाता है।
संग्रहीत फ़ंक्शन का उपयोग करना
अब आप डेटाबेस क्वेरी में संग्रहीत फ़ंक्शन को निष्पादित कर सकते हैं। निम्न SQL कथन दर्शाता है कि यह कैसे करना है:
SELECT *, calcProfit(prod_cost,prod_price) AS profit FROM products;
यह SQL कथन निम्नलिखित परिणाम देता है:
+---------+--------------+-----------+------------+--------+ | prod_id | prod_name | prod_cost | prod_price | profit | +---------+--------------+-----------+------------+--------+ | 1 | Basic Widget | 5.95 | 8.35 | 2.40 | | 2 | Micro Widget | 0.95 | 1.35 | 0.40 | | 3 | Mega Widget | 99.95 | 140 | 40.05 | +---------+--------------+-----------+------------+--------+
जैसा कि आप देख सकते हैं, calcProfit फ़ंक्शन स्वचालित रूप से तालिका में प्रत्येक उत्पाद के लिए लाभ (कीमत घटाकर लागत) की गणना करता है।
संग्रहीत कार्यविधियां
संग्रहीत कार्यविधियाँ कभी-कभी संग्रहीत कार्यों के साथ भ्रमित होती हैं, लेकिन वे कुछ महत्वपूर्ण तरीकों से भिन्न होती हैं। उदाहरण के लिए, संग्रहीत कार्यविधियों को कॉल . के साथ लागू किया जाना चाहिए कथन, जबकि संग्रहीत कार्यों का उपयोग सीधे SQL अभिव्यक्तियों में किया जा सकता है। आप MySQL का उपयोग करने वाले किसी भी A2 होस्टिंग सर्वर पर संग्रहीत कार्यविधियों को परिभाषित और चला सकते हैं।
निम्नलिखित MySQL कथन प्रदर्शित करते हैं कि प्रक्रिया परीक्षण . नामक एक बहुत ही बुनियादी संग्रहीत कार्यविधि कैसे बनाई जाए . यह प्रक्रिया उत्पादों . पर एक साधारण लुकअप करती है तालिका जिसे हमने ऊपर संग्रहीत फ़ंक्शन उदाहरण में उपयोग किया था। हालांकि इस प्रक्रिया का अधिक व्यावहारिक उपयोग नहीं है, यह एक संग्रहीत कार्यविधि घोषित करने के लिए सही सिंटैक्स और संरचना को प्रदर्शित करता है:
DELIMITER $$ CREATE PROCEDURE procedureTest() BEGIN SELECT prod_name FROM products; END$$ DELIMITER ;
संग्रहीत कार्यविधि को निष्पादित करने के लिए, निम्न MySQL कथन का उपयोग करें:
CALL procedureTest() \Gयदि आप phpMyAdmin का उपयोग कर रहे हैं, तो \G . के बिना पिछला MySQL कथन टाइप करें अंत में विकल्प।
अधिक जानकारी
MySQL में संग्रहीत कार्यविधियों और कार्यों के बारे में अधिक जानकारी के लिए, कृपया http://dev.mysql.com/doc/refman/5.0/en/create-procedure.html पर जाएं।