Stored function có thể tham chiếu bảng nhưng không được dùng câu lệnh trả về result set (không SELECT trả về dòng). Dùng SELECT ... INTO để gán biến.
Tạo function Avg_marks tính trung bình điểm từ bảng Student_marks:
mysql> SELECT * FROM Student_marks;
+-------+------+---------+---------+---------+
| Name | Math | English | Science | History |
+-------+------+---------+---------+---------+
| Raman | 95 | 89 | 85 | 81 |
| Rahul | 90 | 87 | 86 | 81 |
+-------+------+---------+---------+---------+
mysql> DELIMITER //
mysql> CREATE FUNCTION Avg_marks(S_name VARCHAR(50))
-> RETURNS INT
-> DETERMINISTIC
-> BEGIN
-> DECLARE M1,M2,M3,M4,avg INT;
-> SELECT Math,English,Science,History INTO M1,M2,M3,M4
-> FROM Student_marks WHERE Name = S_name;
-> SET avg = (M1+M2+M3+M4)/4;
-> RETURN avg;
-> END //
Query OK, 0 rows affected (0.01 sec)
Gọi function:
mysql> SELECT Avg_marks('Raman') AS 'Raman_Marks';
+-------------+
| Raman_Marks |
+-------------+
| 88 |
+-------------+
mysql> SELECT Avg_marks('Rahul') AS 'Raman_Marks';
+-------------+
| Raman_Marks |
+-------------+
| 86 |
+-------------+
Lưu ý: Function không được chứa SELECT trả về result set, chỉ SELECT INTO gán biến.