संग्रहीत प्रक्रिया, नियमित कंप्यूटिंग भाषा के संदर्भ में, एक उपप्रोग्राम की तरह एक सबरूटीन के रूप में परिभाषित किया जा सकता है जो एक डेटाबेस में संग्रहीत होता है। MySQL के संदर्भ में, यह डेटाबेस कैटलॉग के अंदर संग्रहीत घोषणात्मक SQL कथनों का एक खंड है। MySQL में संग्रहीत कार्यविधियाँ लिखने से पहले, हमें संस्करण की जाँच करनी चाहिए क्योंकि MySQL 5 संग्रहीत कार्यविधि का परिचय देता है। संग्रहीत कार्यविधि बनाने के लिए सिंटैक्स निम्नलिखित है -
सिंटैक्स
CREATE [DEFINER = { user | CURRENT_USER }] PROCEDURE sp_name ([proc_parameter[,...]]) [characteristic ...] routine_body proc_parameter: [ IN | OUT | INOUT ] param_name type type: Any valid MySQL data type characteristic: COMMENT 'string' | LANGUAGE SQL | [NOT] DETERMINISTIC | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA } | SQL SECURITY { DEFINER | INVOKER } routine_body: Valid SQL routine statement
उदाहरण
निम्नलिखित एक उदाहरण है जिसमें हमने 'student_info' तालिका से सभी रिकॉर्ड प्राप्त करने के लिए एक सरल प्रक्रिया बनाई, जिसमें निम्न डेटा है -
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)
अब, निम्नलिखित प्रश्नों की सहायता से हमने allrecords()
नामक संग्रहित प्रक्रिया बनाई है।mysql> Delimiter // mysql> Create Procedure allrecords() -> BEGIN -> Select * from Student_info; -> END// Query OK, 0 rows affected (0.02 sec) mysql> DELIMITER ;