নियमিত কম্পিউটিং ভাষার প্রসঙ্গে, স্টোরড প্রোসিজারকে একটি সাবরুটিন বা সাবপ্রোগ্রাম হিসেবে সংজ্ঞায়িত করা যায় যা ডাটাবেসে সংরক্ষিত থাকে। 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 ;