优点:
1、 运行速度:对于很简单的sql,存储过程没有什么优势。对于复杂的业务逻辑,因为在存储过程创建的时候,数据库已经对其进行了一次解析和优化。存储过程一旦执行,在内存中就会保留一份这个存储过程,这样下次再执行同样的存储过程时,可以从内存中直接调用,所以执行速度会比普通sql快。
2、 减少网络传输:存储过程直接就在数据库服务器上跑,所有的数据访问都在数据库服务器内部进行,不需要传输数据到其它服务器,所以会减少一定的网络传输。但是在存储过程中没有多次数据交互,那么实际上网络传输量和直接sql是一样的。而且我们的应用服务器通常与数据库是在同一内网,大数据的访问的瓶颈会是硬盘的速度,而不是网速。
3、可维护性:的存储过程有些时候比程序更容易维护,这是因为可以实时更新DB端的存储过程。 有些bug,直接改存储过程里的业务逻辑,就搞定了。
4、增强安全性:提高代码安全,防止 SQL注入
5、可扩展性:应用程序和数据库操作分开,独立进行,而不是相互在一起。后期逻辑或需求变更,可以之间在服务端的数据库修改,不需要变更前台代码;
  缺点:
1、可移植性差;换数据库的话,oracle数据库的存储过程无法迁移到mysql、db2等其他数据库,不通用;
2、占用服务器端较多资源,大量存储过程并发时对数据库服务器造成很大的压力;
3、对外接口受限制,只能跟oracle数据库交互,不能给其他数据库交互,也不能跟分布式数据库如hive等交互,也不能读入文件;
4、后期编译报错,不能主动提示,如果用定时任务调度时,由于编译报错导致任务失败,无法监控;

更多推荐

oracle数据库存储过程的优缺点