Thủ tục lưu trữ, trong ngữ cảnh của ngôn ngữ máy tính thông thường, có thể được định nghĩa là một chương trình con giống như một chương trình con được lưu trữ trong cơ sở dữ liệu. Trong ngữ cảnh của MySQL, nó là một phân đoạn của các câu lệnh SQL khai báo được lưu trữ bên trong danh mục cơ sở dữ liệu. Trước khi viết các thủ tục được lưu trữ trong MySQL, chúng ta phải kiểm tra phiên bản vì MySQL 5 giới thiệu thủ tục được lưu trữ. Sau đây là cú pháp để tạo một thủ tục được lưu trữ -
Cú pháp
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
Ví dụ
Sau đây là một ví dụ trong đó chúng tôi đã tạo một thủ tục đơn giản để lấy tất cả các bản ghi từ bảng ‘student_info’ có dữ liệu sau -
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)
Bây giờ, với sự trợ giúp của các truy vấn sau, chúng tôi đã tạo thủ tục được lưu trữ có tên allrecords ()
mysql> Delimiter // mysql> Create Procedure allrecords() -> BEGIN -> Select * from Student_info; -> END// Query OK, 0 rows affected (0.02 sec) mysql> DELIMITER ;