存储过程(一)

第一次真正的接触到存储过程,在之前的工作当中,虽然也有接触过,但都是调用别人写的存储过程来执行。没有深入的了解它。所幸在现在的工作当中,当我用sql来处理某问题时,发现单单的sql是搞不定的,我第一反应就是用存储过程。现学现卖的学习了简单的存储过程,并解决了工作中的问题。那么我就把所学的步骤过程和大家分享下。是怎么从一个存储过程小白到存储过程菜鸟,至于大牛还没到那个层级。心急吃不了热豆腐,一步一步来。初学者切勿眼高手低...

开始学习吧


什么是存储过程?

存储过程(Stored Procedure)是在大型数据库系统中,为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。

存储过程是数据库中的一个重要对象。

存储过程的优缺点

优点

  • 提升性能
    • 原本都是通过代码来传递SQL语句来实现业务逻辑,那如果封装成存储过程之后,编译之后放在数据库端,这样在程序调用数据时就无需传递SQL在编译来执行。
  • 数据的完整性和一致性
    • 存储过程可以被重复调用,只要经过严格的测试之后,保证正确的运行存储过程,那么在新的代码中也无需再次经过测试
  • 安全性高
    •  存储过程可以被赋予权限的,从而能够实现对某些数据访问的限制,避免非授权用户对数据的访问,保证数据的安全
  • 执行效率高
    • 采用存储过程的话,代码在首次运行时,就会把存储过程编译缓存到数据库服务器,方便下次调用,缩短sql运行时间
  • 减少服务器与客户端交互时间 
    • 由于客户端调用服务器端时,只需输入存储过程名称和参数名,会减少服务器和客户端的之间交互的网络流量

缺点

  • 不方便调试
    • 如果SQL我们通过程序代码来控制的,可以很方便的增加断点来调试,查看变量值从而定位sql的执行正确性。那么如果编写存储过程,很难调试,必须严格测试。
  • 不易扩展
    • 不同类型数据库的存储过程语法是有差异的,如果使用了存储过程那么应用程序就不具备了迁移扩展能力。

为什么要用存储过程?

在了解了存储过程的概念之后。那么会有疑问,为什么要用存储过程?

大家不要被存储过程这四个“”高大上高逼格”的字给忽悠了。用大白话说什么是存储过程呢?

就是一堆SQL中间夹杂了点逻辑控制而已。在处理比较复杂的业务逻辑会比较实用。

为什么要用呢?就是因为上面我们说的存储过程的优点。那么就会有人说了,有缺点还用吗?

当优大于缺的时候,根据业务逻辑复杂度还是会选择的。

以上就是一些简单的存储过程概念,说的不全但我觉得都是重点。

开始存储过程之旅吧。基于mySql的存储过程


基本语法

1、创建存储过程

create procedure selectData()
begin
.........
end

-- 创建一个名为 selectData的存储过程。

create procedure selectData()

begin是执行开始,end就是到这结束,在这两行代码之间就是存储过程的逻辑。

2、调用存储过程

创建完了,那么怎么调用存储过程呢?

call selectData();

注意:不管存储过程有没有参数,都必须加括号。类似于java里的方法调用。

3、删除存储过程

为什么要有这个语法呢?当我们创建完了一个存储过程之后,如果里面的逻辑需要修改,那么修改完之后是需要在执行一下创建存储过程语法的。如果没有删除,又执行了创建语法,会异常告诉你,这个存储过程已经存在了。只能删除或者修改我们的存储过程名。

drop procedure selectData;

注意:切勿在一个存储过程里面调用删除另一个存储过程的语法。

4、其他常用语法

显示数据库中所有存储的存储过程基本信息,比如:所属数据库,存储过程名,创建时间等信息

show procedure status;

显示某一个存储过程的基本信息

show create procedure selectData;

这就是存储过程的一些基本语法。大家好好的记一下语法。


下一篇提前预知:

  • 调用存储过程执行简单查询SQL
  • 存储过程的数据类型及运算符
  • 存储过程的输入输出
  • 存储过程的流程控制语句

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值