什么是存储过程?
【摘要】 定义存储过程是事先经过编译并存储在数据库中的一段SQL语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。优缺点优点:重复使用:存储过程可以重复使用,从而可以减少数据库开发人员的工作量。减少网络流量:存储过程位于服务器上,调用的时候只需要传递存储过程的名称以及参数就可以了,因此降低了网络传输的数据量。安全性:参数化...
定义
存储过程是事先经过编译并存储在数据库中的一段SQL语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。
优缺点
优点:
- 重复使用:存储过程可以重复使用,从而可以减少数据库开发人员的工作量。
- 减少网络流量:存储过程位于服务器上,调用的时候只需要传递存储过程的名称以及参数就可以了,因此降低了网络传输的数据量。
- 安全性:参数化的存储过程可以防止SQL注入式攻击,而且可以将Grant、Deny以及Revoke权限应用于存储过程。
缺点:
- 更改比较繁琐:如果更改范围大到需要对输入存储过程的参数进行更改,或者要更改由其返回的数据,则仍需要更新程序集中的代码以添加参数、更新 GetValue() 调用,等等,这时候估计比较繁琐。
- 可移植性差:使用存储过程封装业务逻辑将限制应用程序的可移植性。如果应用程序的可移植性在您的环境中非常重要,则需要将业务逻辑封装在不特定于 RDBMS 的中间层中。
调用方式
一般使用 call procedure_name(param1,……)
也可以使用 exec procedure_name(param1,……)
对比
对比匿名块
存储过程是经过预编译并存储在数据库中的,可以重复使用;而匿名块是未存储在数据库中,从应用程序缓存区擦除后,除非应用重新输入代码,否则无法重新执行
对比函数
存储过程:可在单个存储过程中执行一系列SQL语句。而且可以从自身内引入其他存储过程。
函数:自定义函数有着诸多限制。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)