MySQL的存储过程

1.为什么要使用存储过程

1.1 首先看一下一条SQL语句的执行过程


    从图中可以看出一条SQL命令进入执行引擎后要进行几步:

        (1)语法分析

        (2)第一步正确的话,将SQL语句编译成mysql可以识别的命令

        (3)执行命令

1.2 存储过程是什么

        存储过程创建后可以省去每次SQL语句的语法分析和编译过程,只在存储引擎创建的时候进行初始化一次,并存储到mysql中,允许被外部程序调用

2.使用存储过程

2.1创建存储过程

CREATE PROCEDURE sp_name ([proc_parameter[,...]])
    [characteristic ...] routine_body
  传递的参数类型
proc_parameter:
    [ IN | OUT | INOUT ] param_name type

        IN:在调用存储过程时传入,但不能返回

        OUT:可以改变并返回,不一定要传入

        INOUT:调用时传入,并可以改变和返回

2.2 例子

    (1)不带参数的:获得mysql的版本


    调用


(2)带IN参数

    用一个user表实现插入操作


    创建存储过程


    结果显示插入成功


(3)创建带OUT类型的数据:加入用户并返回用户的总数


调用并查询


返回值


查看存储过程:

select * from mysql.proc;

3.什么时候使用存储过程

    3.1 何时使用  

        当一个事务涉及到多个SQL语句时或者涉及到对多个表的操作时就要考虑用存储过程;当在一个事务的完成需要很复杂的商

业逻辑时(比如,对多个数据的操作,对多个状态的判断更改等)要考虑

   

    3.2 优点

        (1)增强了SQL语句的灵活性

                  可以传参,可以在内部执行较为复杂的逻辑,可以有返回值

        (2)更快:预编译

        (3)减少了网络流量:传参数和传递SQL语句

        

1.3 缺点

        (1)可移植性差:存储过程一般会绑定几张表或者实现固定的业务,当表或者业务发生改变后,存储过程也要相应的改变

        (2)不利于面向对象程序设计,例如Spring的ORM(数据和实体之间的映射)

    

4.存储过程与函数的区别

    1.存储过程实现的过程要复杂一些,而函数的针对性较强;

    2.存储过程可以有多个返回值,而自定义函数只有一个返回值;

    3.存储过程一般独立的来执行,而函数往往是作为其他SQL语句的一部分来使用;




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值