13丨什么是存储过程,在实际项目中用得多么?
该思维导图由 AI 生成,仅供参考
什么是存储过程,如何创建一个存储过程
- 深入了解
- 翻译
- 解释
- 总结
存储过程在SQL中扮演着重要的角色,类似于函数,能够封装SQL代码,实现反复利用。与视图相似,存储过程具有清晰、安全、减少网络传输量等优点,但不同于视图的虚拟表,存储过程是程序化的SQL,可以直接操作底层数据表,实现更复杂的数据处理。存储过程由SQL语句和流控制语句构成,可以接收输入参数,返回输出参数和计算结果。尽管存储过程有诸多优点,但其使用也存在争议。一些公司要求大型项目使用存储过程,因为它可以提升SQL执行效率、减少开发工作量、增强安全性、减少网络传输量。然而,存储过程的可移植性差、调试困难、版本管理困难、不适合高并发场景等缺点也是明显的。尽管不同公司对存储过程的态度不一,但对于开发人员来说,掌握存储过程是必备的技能之一。文章还提供了一个针对王者荣耀英雄数据表的存储过程练习,帮助读者更好地理解存储过程的应用。
《SQL 必知必会》,新⼈⾸单¥68
全部留言(81)
- 最新
- 精选
- 半瓶醋注意:CREATE PROCEDURE `get_sum_score`这里不是单引号,是` `号哦~ # 编写存储过程get_sum_score,用来得到某一类型英雄的最大生命值的总和 CREATE PROCEDURE `get_sum_score`( OUT sum_max_hp FLOAT, IN s VARCHAR(255) ) BEGIN SELECT sum(hp_max) FROM heros WHERE role_main = s INTO sum_max_hp; END # 调用存储过程 CALL get_sum_score(@sum_max_hp,'战士') SELECT @sum_max_hp;
作者回复: Good Job 对的 不是单引号
2019-10-25614 - 毛豆存储过程很重要,可不可以详细讲讲
作者回复: 可以 考虑在进阶篇加一篇关于存储过程的使用。这个在工作中还比较常用
2019-07-12314 - 番茄请教下老师或者各位小伙伴,调用程序这里,直接call就出结果了,下面那句select为什么要加上呢 CALL get_hero_scores(@max_max_hp, @min_max_mp, @avg_max_attack, '战士'); SELECT @max_max_hp, @min_max_mp, @avg_max_attack;
作者回复: CALL get_hero_scores(@max_max_hp, @min_max_mp, @avg_max_attack, '战士'); 这里是把结果放到max_max_hp, min_max_mp, avg_max_attack 这三个变量中进行返回,如果要显示出来结果,可以使用:SELECT @max_max_hp, @min_max_mp, @avg_max_attack;
2019-11-2611 - 高志强终于明白了啥是存储过程,谢谢老师~
作者回复: 加油志强
2019-11-016 - Monday老师的脑图总结得很到位,求共享啊。谢谢
作者回复: 感谢 我放到GitHub上了,可以看下
2019-08-0734 - Elliot极课时间页面的交互要是能像Medium那样就更完美了,比如可以自己mark一些书签标记
作者回复: 多谢反馈
2019-07-2122 - 我行我素CREATE PROCEDURE `get_sum_score`( OUT sum_hp_max FLOAT, s VARCHAR(255) ) BEGIN SELECT sum(hp_max) FROM heros WHERE role_main = s INTO sum_hp_max; END CALL get_sum_score(@sum_hp_max, '法师'); SELECT @sum_hp_max;
作者回复: Good Job
2019-07-102 - 丁丁历险记就是个毒瘤,慎用
作者回复: 对 根据业务情况选择把,有些公司不用,也有一些公司在使用
2019-11-1451 - CooolCREATE PROCEDURE `get_sum_score`(out sum_max_hp float,in s varchar(255)) BEGIN select sum(hp_max) from heros where role_main=s into sum_max_hp; END call get_sum_score(@sum_max_hp,'战士') ; select @sum_max_hp ;
作者回复: Good Job
2019-10-22 - 未来的胡先森交作业了 DELIMITER // CREATE PROCEDURE get_sum_score( OUT sum_max_hp FLOAT, t VARCHAR(255)) BEGIN SELECT SUM(hp_max) FROM heros WHERE role_main=t INTO sum_max_hp; END // DELIMITER ; CALL get_sum_score(@sum_max_hp,'战士'); SELECT @sum_max_hp;
作者回复: Good Job
2019-08-08