Select*fromStudent_marks;+-------+------+---------+---------+-------- -+|Name |Math|E"/> Select*fromStudent_marks;+-------+------+---------+---------+-------- -+|Name |Math|E">

MySQL stored functions can reference tables, but they cannot use statements that return result sets. So we can say that there is no SELECT query that returns a result set. But we can use SELECT INTO to get rid of this problem. For example, we are creating a function "Avg_marks" which calculates the average score using dynamic data from a table called "Student_marks" (with the following records).
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)The above is the detailed content of How do we create a MySQL stored function that uses dynamic data from a table?. For more information, please follow other related articles on the PHP Chinese website!