+ 收藏我们

网站模板

网站模板搜索
404模板 营销型模板 外贸网站模板 单页模板 双语模板 标签大全
电话:18630701785
首页 > 站长学院 > 我们如何创建一个使用表中动态数据的 MySQL 存储函数? >

我们如何创建一个使用表中动态数据的 MySQL 存储函数?

时间:2024-05-21 10:07:18

MySQL 存储函数可以引用表,但不能使用返回结果集的语句。因此我们可以说不存在返回结果集的 SELECT 查询。但我们可以使用 SELECT INTO 来摆脱这个问题。例如,我们正在创建一个函数“Avg_marks”,它使用名为“Student_marks”的表中的动态数据(具有以下记录)来计算平均分数。

  1. mysql> Select * from Student_marks;
  2. +-------+------+---------+---------+---------+
  3. | Name | Math | English | Science | History |
  4. +-------+------+---------+---------+---------+
  5. | Raman | 95 | 89 | 85 | 81 |
  6. | Rahul | 90 | 87 | 86 | 81 |
  7. +-------+------+---------+---------+---------+
  8. 2 rows in set (0.00 sec)
  9.  
  10. mysql> DELIMITER //
  11. mysql> Create Function Avg_marks(S_name Varchar(50))
  12. -> RETURNS INT
  13. -> DETERMINISTIC
  14. -> BEGIN
  15. -> DECLARE M1,M2,M3,M4,avg INT;
  16. -> SELECT Math,English,Science,History INTO M1,M2,M3,M4 FROM Student_marks W
  17. HERE Name = S_name;
  18. -> SET avg = (M1+M2+M3+M4)/4;
  19. -> RETURN avg;
  20. -> END //
  21. Query OK, 0 rows affected (0.01 sec)
  22.  
  23. mysql> DELIMITER ;
  24. mysql> Select Avg_marks('Raman') AS 'Raman_Marks';
  25. +-------------+
  26. | Raman_Marks |
  27. +-------------+
  28. | 88 |
  29. +-------------+
  30. 1 row in set (0.07 sec)
  31.  
  32. mysql> Select Avg_marks('Rahul') AS 'Raman_Marks';
  33. +-------------+
  34. | Raman_Marks |
  35. +-------------+
  36. | 86 |
  37. +-------------+
  38. 1 row in set (0.00 sec)

有问题可以加入网站技术QQ群一起交流学习

本站会员学习、解决问题QQ群(691961965)

客服微信号:lpf010888

Title