SQL学习十六、使用存储过程

在数据库的处理中经常会有一些复杂的操作需要多条语句才能完成,就以电商购物为例,我们处理订单的流程
1、处理订单第一步,检查库存中是否有对应的商品
2、如果物品有库存,需要预定,不再出售给别的人,并且减少物品数据 以反映正确的库存量
3、如果库存中没有的物品,则需要订购,这需要与供应商进行某种交互
4、当商品入库的时候,哪些等待的订单可以立即发货,并通知客户

这里面的逻辑需要针对许多表的多条 SQL语句进行处理,而且执行具体的 SQL语句及其次序也不是固定的,会根据库存的影响而变化。

那么我们在实际生产中怎么处理这个问题呢?
单独编写每条 SQL语句,并根据结果有条件地执行其他语句。在每次需要这个处理时(以及每个需要它的应用中), 都重新做一遍这些工作?

答案是,我们可以使用存储过程。

简单来说,存储过程就是为以后使用而保存的一条 或多条 SQL语句。可将其视为批文件,虽然它们的作用不仅限于批处理。


为什么要使用存储过程?

  • 好处 – 简单、安全、高性能

1、把处理封装在一个易用的单元中,可以简化复杂的操作
2、保证数据的一致性、防止错误,因为封装好了一系列的处理步骤,而不要求反复建立,所以当所有开发人员和应用程序都使用同一存储过程时,他们所使用的代码都是相同的。 这一点的延伸就是防止错误。需要执行的步骤越多,出错的可能性就越大。
3、简化对变动的管理。如果表名、列名或业务逻辑(或别的内容)有变 化,那么只需要更改存储过程的代码。使用它的人员甚至不需要知道 这些变化。 这一点的延伸就是安全性。通过存储过程限制对基础数据的访问,减 少了数据讹误(无意识的或别的原因所导致的数据错误)的机会。
4、因为存储过程通常以编译过的形式存储,所以 DBMS处理命令所需的 工作量少,提高了性能

  • 不足

1、不同 DBMS中的存储过程语法有所不同,这就造成编写真正的可移植存储过程几乎是不可能的。
但是也可以保证相对的可移植性,至少客户端的代码不用修改。
2、编写存储过程比编写基本 SQL语句复杂,需要更高的技能, 更丰富的经验。因此,许多数据库管理员把限制存储过程的创建作为 安全措施。


DBMS 的支持

学习的例子是 Oracle和 SQL Server的语法,
SQLite 不支持存储过程

关于存储过程的创建及使用(未完待续…)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值