MySQL存储过程含义简单解析及其使用

什么是存储过程

  • 一组可编程的函数, 是为了完成特定功能的SQL语句集
  • 存储过程就是具有名字的一段代码, 用来完成个特定的功能。
  • 创建的存储过程保存在数据库的数据字典中

为什么要用存储过程

  • 将重复性很高的一些操作, 封装到-个存储过程中, 简化了对这些SQL的调用
  • 批量处理数据
  • 统一接口,确保数据的安全
  • 相对于oracle数据库来说,MySQL的存储过程相对功能较弱,使用较少。

存储过程的创建和调用

DELIMITER

存储过程的创建和调用之前,我们要先了解一下DELIMITER

  • 它与存储过程语法无关
  • DELIMITER语将标准分隔符-分号(:)更改为其他符号,比如美元符: “ $ $ ”

    这东西有什么用?
    因为我们想将存储过程作为整体传递给服务器,而不是让mysq|工具一次解释每个语询
    告诉mysql解释器,该段命令是否已经结束了,mysq|是否可以执行了。默认情况下delimiter是分号;。在命令行客户端中,如果有一行命令以分号结束, 那么回车后,mysq|将会执行该命令。但有时候,不希望MySQL这么做。在为可能输入较多的语句,且语句中包含有分号,使用"delimiter $ $ ",这样只有当$$出现之后,mysq|解释器才会执行这段语句。
    简单来说,每输入一条mysql语句需要输入分号“;”才能执行,现在我们将分号改为两个美元符。

创建存储过程

delimiter $$
CREATE PROCEDURE 存储过程名()
BEGIN
语句
END$$

举个栗子
假设我们有学生表一张
在这里插入图片描述
创建学生表存储过程

delimiter $$
CREATE PROCEDURE show_stu()
BEGIN
SELECT * FROM tu;
END$$
delimiter ;

调用存储过程

call名称() ;

举个栗子
调用上面创建好的存储过程

call show_stu() ;

运行结果
在这里插入图片描述

查看存储过程

查看所有存储过程

SHOW PROCEDURE STATUS;

查看指定数据库中的存储过程

SHOW PROCEDURE STATUS WHERE db = '数据库名';

查看指定存储过程源代码

SHOW CREATE PROCEDURE 存储过程名 ;

注意这里的存储过程名后面不用加()

删除存储过程

drop PROCEDURE 存储过程名;

存储过程变量

  • 在存储过程中声明一个变量
    DECLARE变量名数据类型(大小) DEFAULT默认值;

  • 声明变量:使用DECLARE语句
    可以声明一个名为total sale的变量,数据类型为INT,默认值为0

DECLARE total sale INT DEFAULT 0;
  • 声明共享相同数据类型的两个或多个变量
DECLAREx, y INT DEFAULT 0;
  • 分配变量值

1.要为变量分配一一个值,可以使用SET语句

SET 变量名= 10;

2.使用SELECT INTO语将查询的结果分配给一个变量

SELECT COUNT(*) INTO 变量名 FROM 表名
  • 变量的范围
    如果在存储过程中声明一个变量,那么当达到存储过程的END语句时,它将超出范围,因此在其它代码块中无法访问

存储过程参数传递:三种类型

  • IN:代表输入,你的参数要传到存过过程的过程里面去:如图,给一个名字,可以查询这个人的所有信息。
    在这里插入图片描述
  • OUT:代表往外输出。
    给一个名字,可以查询这个人薪资
    在这里插入图片描述
  • INOUT:既能输入一个值又能传出来一个值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值