存储过程

什么是存储过程

  存储过程是一组为了完成特定功能的SQL语句集,存储在数据库中,通过第一次编译后再次调用不须要再次编译,用户经过指定存储过程的名字并给出参数(若是该存储过程带有参数)来执行它。
  注:存储过程被编译后直接保存在到了数据库,使用时能够调用直接调用,省去编译过程,他多是多条SQL语句的集合。数据库

存储过程的优势

  • 效率高。因为数据库执行动做时,是先编译后执行的。然而存储过程是一个编译过的代码块,因此执行效率要比T-SQL语句高。
  • 减小网络流量。存储过程位于服务器上,调用的时候只须要传递存储过程的名称以及参数就能够了,所以下降了网络传输的数据量。
  • 重复使用。存储过程能够重复使用,从而能够减小数据库开发人员的工做量。
  • 方便实施企业规则。能够把企业规则的运算程序写成存储过程放入数据库服务器,这样便于集中控制,易于维护。当企业规则修改时只要修改存储过程就能够,无需修改其余应用程序。
  • 安全性。参数化的存储过程能够防止SQL注入式攻击(网络传输时,只是传输的存储过程的名称和参数,SQL没法注入),数据库管理员能够向访问数据库中存储过程的应用程序授予适当的权限,而不向基础数据库表提供任何权限。

存储过程的缺点

  • 调试麻烦。基本上没有较好的调试器,不少时候是用print来调试,但用这种方法调试长达数百行的存储过程简直是噩梦。
  • 移植性差。不一样数据库支持的语言不同,其存储过程的编写规则也不同,例如MySQL和SQLserver存储过程的编写有不小的差距,因此存储过程没法移植到另外一类数据库。
  • 不能大量使用。若是在一个程序系统中大量的使用存储过程,到程序交付使用的时候随着用户需求的增长会致使数据结构的变化,接着就是系统的相关问题了,最后若是用户想维护该系统能够说是很是难、并且代价是空前的,维护起来更麻烦。
  • 没法适应数据库的切割(水平或垂直切割)。数据库切割以后,存储过程并不清楚数据存储在哪一个数据库中。

    关于MySQL存储过程编写的一些简单案例
相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息