如何使用存储过程

看到一个问题: 为什么开发中不推荐使用存储过程和触发器?

作为开发看来, 存储过程是数据库的”自定义函数”, 而触发器则是数据库的”行为钩子”

存储过程是由流程控制语句和SQL语句书写的一组SQL语句集合
比如在ERP开发中, 十几张表联表查询的情况下, 将多组SQL写入存储过程, 一次调用即可取得结果

  1. 简化开发, 应用程序代码减少, 提高了开发效率
  2. 提高查询性能, 直接编译成物理计划, 减少了parse和查询优化步骤
  3. 减少了网络IO开销

缺点也是有的

  1. 你需要同时维护两套代码, 同时增加了开发, 测试, 上线的复杂度
  2. 存储过程无法支持分库分表, 有些分布式中间件不支持存储过程
  3. 存储过程中的控制逻辑, 是各家数据库自已的方言, 移植到其他数据库成本高

使用存储过程和触发器取决于使用场景

如果你某些业务涉及大量SQL操作, 并且稳定, 极少改动, 使用它也许是不错的
请衡量利弊, 做好取舍

可以参考该链接, 其中有更详细的讨论: https://www.zhihu.com/question/57545650