Giới thiệu
Stored procedure trong MySQL có thể chứa nhiều câu lệnh SELECT, mỗi câu trả về một result set riêng biệt.
1. Tạo stored procedure
mysql> DELIMITER //
mysql> CREATE PROCEDURE select_statement()
-> BEGIN
-> SELECT "HI" AS `FIRST VALUE`;
-> SELECT "HELLO" AS `SECOND VALUE`;
-> END
-> //
Query OK, 0 rows affected (0.09 sec)
mysql> DELIMITER ;
Lưu ý: Phải đổi DELIMITER từ ';' sang '//' để tránh kết thúc procedure sớm.
2. Gọi procedure
mysql> CALL select_statement();
3. Kết quả (2 result set)
+-------------+ | FIRST VALUE | +-------------+ | HI | +-------------+ 1 row in set (0.00 sec) +--------------+ | SECOND VALUE | +--------------+ | HELLO | +--------------+ 1 row in set (0.01 sec) Query OK, 0 rows affected (0.01 sec)
Ứng dụng thực tế:
- Trả về nhiều tập kết quả cho báo cáo đa phần
- Kết hợp truy vấn thống kê + chi tiết trong một lần gọi
- Giảm round-trip giữa ứng dụng và database
Trong ứng dụng (Java, PHP, Python...), cần dùng driver hỗ trợ multiple result sets (ví dụ: JDBC Statement.getMoreResults()).