Computer >> Máy Tính >  >> Lập trình >> MySQL

Làm cách nào chúng ta có thể tạo một hàm được lưu trữ trong MySQL sử dụng dữ liệu động từ một bảng?

Các hàm được lưu trữ trong MySQL có thể tham chiếu các bảng nhưng chúng không thể sử dụng các câu lệnh trả về tập kết quả. Do đó, chúng ta có thể nói rằng không có truy vấn SELECT nào trả về tập kết quả. Nhưng chúng ta có thể CHỌN VÀO để loại bỏ điều đó. Ví dụ:chúng tôi đang tạo một hàm ‘Avg_marks’ sử dụng dữ liệu động từ bảng có tên ‘Student_marks’, có các bản ghi sau, để tính điểm trung bình.

mysql> Select * from Student_marks;
+-------+------+---------+---------+---------+
| Name  | Math | English | Science | History |
+-------+------+---------+---------+---------+
| Raman |   95 |      89 |      85 |      81 |
| Rahul |   90 |      87 |      86 |      81 |
+-------+------+---------+---------+---------+
2 rows in set (0.00 sec)

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 W
HERE Name = S_name;
    -> SET avg = (M1+M2+M3+M4)/4;
    -> RETURN avg;
    -> END //
Query OK, 0 rows affected (0.01 sec)

mysql> DELIMITER ;
mysql> Select Avg_marks('Raman') AS 'Raman_Marks';
+-------------+
| Raman_Marks |
+-------------+
|          88 |
+-------------+
1 row in set (0.07 sec)

mysql> Select Avg_marks('Rahul') AS 'Raman_Marks';
+-------------+
| Raman_Marks |
+-------------+
|          86 |
+-------------+
1 row in set (0.00 sec)