mysql 存储过程语法


mysql 5.0 以后版本才开始支持存储过程

存储过程:是一种在数据库中存储的复杂的程序,以便外部程序或者其他应用程序对数据进行调用的数据库对象。

两个要点:存储在数据库中 复杂的程序
          被调用
          
简单的来说:存储过程就是在数据库中编写代码,目的是为了完成特定的任务或者功能的 SQL 的集合,它是一个
            语句集,经过编辑保存到数据库中,可以让指定的用户对其进行调用,提升效率。
            
            
即:是数据库中 SQL 层面的代码的封装和调用。

优点:
    1、可封装,并且隐藏复杂的商业逻辑
    2、可以进行回传值,并且可以接收参数
    3、可以让复杂的语句封装成简单的函数或者子程序
    4、可以用在数据校验,企业规则,内部逻辑比较复杂的业务上
    
缺点:
    1、存储过程对数据库的依赖很大,定制化在特定的数据库上,支持的语言规范不一样
    2、可移植性一般,复用率低
    3、无法直接使用 SELECT 指令进行运行,因为是子程序
    
--------------------------------------------------------------------------

创建存储过程的语法:

CREATE PROCEDURE 过程名([IN OUT INOUT] 参数名 数据类型,[IN OUT INOUT] 参数名 数据类型,...)
BEGIN
   过程体;
END;

----------------------------
# 存储过程的参数

mysql 中参数的定义,一共支持三种类型:  IN  OUT  INOUT 

   IN 输入参数:表示调用者向过程传入值(可以是具体的值,也可以是变量)
   OUT 输出参数:表示过程向调用者传出值(可以返回多个值,传出的值只能是变量);
   INOUT 输入输出参数:表示调用者向过程传入值,又表示过程向调用者传出值(值只能是变量)。
   
建议:  输入值就用 IN 参数
        输出值使用 OUT 参数
        INOUT 参数尽量少用
        
注意:存储过程支持没有参数,即使没有参数,但是过程名后面的()必须要有,不可以省略;
      参数的名字不能等于列名,否则的话在执行过程体的时候,参会会被当做整个列来出来。
      
# 过程体

由合法的 SQL 语句构成,即 SQL 命令集,可执行,过程体包含了过程调用执行的所有的 SQL 语句:

例如: DQL 、DML 、DDL 、IF-THEN-ELSE 等等,以及申明变量。

过程体的格式: 以 BEGIN 开始,以 END 结束(可以嵌套) 
    注意:每个嵌套块中每条命令结束,都必须使用 ; 结束。
    
# 调用

    1)可以使用一个 CALL 命令通过名字对存储进行调用;
    
    CALL 存储过程的名称();
    
    2) 可以供外部程序调用,比如 Java 程序,比如 python 。

---------------------------- 存储过程实例 -----------------------------------

# 实例:不带参数的存储过程

CREATE PROCEDURE p1()
BEGIN

   SELECT 'hello world!' ;
END;
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值