MySQL में स्टोर्ड प्रोसीजर के अंदर SELECT स्टेटमेंट रखकर टेबल रिकॉर्ड्स प्रदर्शित कर सकते हैं। यह एनकैप्सुलेशन, पुन: उपयोग, और सुरक्षा (टेबल पर सीधे SELECT अधिकार दिए बिना डेटा एक्सेस) के लिए उपयोगी है।
उदाहरण: सभी रिकॉर्ड प्रदर्शित करने वाला प्रोसीजर
डेमो टेबल बनाएं:
mysql> CREATE TABLE DemoTable1933 (ClientName VARCHAR(20));
डेटा इन्सर्ट करें:
mysql> INSERT INTO DemoTable1933 VALUES
('Chris Brown'), ('David Miller'), ('Adam Smith'), ('John Doe');
स्टोर्ड प्रोसीजर बनाएं:
mysql> DELIMITER //
mysql> CREATE PROCEDURE display_all_records()
BEGIN
SELECT * FROM DemoTable1933;
END //
mysql> DELIMITER ;
प्रोसीजर कॉल करें:
mysql> CALL display_all_records();
आउटपुट:
+--------------+ | ClientName | +--------------+ | Chris Brown | | David Miller | | Adam Smith | | John Doe | +--------------+
पैरामीटर के साथ प्रोसीजर (फ़िल्टरिंग)
CREATE PROCEDURE get_clients_by_name(IN search_name VARCHAR(50))
BEGIN
SELECT * FROM DemoTable1933
WHERE ClientName LIKE CONCAT('%', search_name, '%');
END
CALL get_clients_by_name('Chris');
आउटपुट पैरामीटर के साथ प्रोसीजर
CREATE PROCEDURE get_client_count(OUT total INT)
BEGIN
SELECT COUNT(*) INTO total FROM DemoTable1933;
END
CALL get_client_count(@cnt); SELECT @cnt;
लाभ
- एनकैप्सुलेशन: SQL लॉजिक डेटाबेस में रहता है
- सुरक्षा: यूज़र को टेबल पर SELECT दिए बिना प्रोसीजर पर EXECUTE दे सकते हैं
- पुन: उपयोग: एप्लिकेशन कोड सरल रहता है
- प्रदर्शन: पार्स/ऑप्टिमाइज़ेशन कैश होता है
- नेटवर्क: कम डेटा ट्रांसफर (केवल परिणाम)
प्रबंधन कमांड
-- प्रोसीजर देखें SHOW PROCEDURE STATUS WHERE Db = DATABASE(); -- प्रोसीजर परिभाषा देखें SHOW CREATE PROCEDURE display_all_records; -- प्रोसीजर ड्रॉप करें DROP PROCEDURE IF EXISTS display_all_records;
सावधानियां
- प्रोसीजर में DDL (CREATE, ALTER, DROP) न करें
- लंबे समय तक चलने वाले प्रोसीजर लॉक होल्ड कर सकते हैं
- परिणाम सेट मेटाडेटा एप्लिकेशन ड्राइवर द्वारा सही ढंग से हैंडल होना चाहिए
स्टोर्ड प्रोसीजर डेटा एक्सेस लेयर को सरल और सुरक्षित बनाने का प्रभावी तरीका है।