Tạo Stored Procedure có tham số OUT trong MySQL
Tham số OUT cho phép procedure trả về giá trị cho biến phiên (session variable) của caller.
Cú pháp tạo procedure
DELIMITER //
CREATE PROCEDURE tenProcedure(
IN tenParamIn KIEU_DU_LIEU,
OUT tenParamOut KIEU_DU_LIEU
)
BEGIN
-- logic xử lý
SET tenParamOut = bieu_thuc;
END //
DELIMITER ;
Ví dụ: Tính căn bậc hai
DELIMITER //
CREATE PROCEDURE Sp_SQRT(IN Number1 INT, OUT Number2 FLOAT)
BEGIN
SET Number2 = SQRT(Number1);
END //
DELIMITER ;
Gọi procedure và lấy kết quả
-- Gọi procedure, lưu kết quả vào biến phiên @MySquareRootNumber
CALL Sp_SQRT(36, @MySquareRootNumber);
-- Xem giá trị biến
SELECT @MySquareRootNumber;
Kết quả
+---------------------+
| @MySquareRootNumber |
+---------------------+
| 6 |
+---------------------+
Lưu ý quan trọng
- Biến phiên (session variable) bắt đầu bằng
@(ví dụ:@tenBien). IN: Truyền giá trị VÀO procedure (read-only bên trong).OUT: Trả giá trị RA khỏi procedure (giá trị ban đầu là NULL).INOUT: Cả hai chiều (đọc và ghi).- Phải dùng
DELIMITERkhi tạo procedure chứa nhiều câu lệnh.
Ứng dụng thực tế
Tính tổng doanh thu theo tháng, trả về qua OUT param để ứng dụng lấy dùng ngay mà không cần SELECT lại.