继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

撩课-Mysql第19部分存储过程详解

慕姐8265434
关注TA
已关注
手记 1147
粉丝 221
获赞 1064

webp

什么是存储过程

一组可编程的函数,
是为了完成特定功能的SQL语句集
经编译创建并保存在数据库中,
用户可通过指定存储过程的名字
并给定参数(需要时)来调用执行。
存储过程就是具有名字的一段代码,
用来完成一个特定的功能。
创建的存储过程保存在数据库的数据字典中

webp

为什么要用存储过程

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

webp

存储过程的创建和调用

DELIMITER $$
它与存储过程语法无关
DELIMITER语句将标准分隔符 - 分号(;)更改为:$$
因为我们想将存储过程作为整体传递给服务器
而不是让mysql工具一次解释每个语句
告诉mysql解释器,
该段命令是否已经结束了,
mysql是否可以执行了。
默认情况下,
delimiter是分号;。
在命令行客户端中,
如果有一行命令以分号结束,
那么回车后,
mysql将会执行该命令。
但有时候,
不希望MySQL这么做。
在为可能输入较多的语句,
且语句中包含有分号。
使用delimiter $$,
这样只有当$$出现之后,
mysql解释器才会执行这段语句。

webp

创建存储过程

CREATE PROCEDURE 名称()BEGIN语句END $$

调用存储过程
call 名称();
删除存储过程
drop procedure 名称
存储过程变量
在存储过程中声明一个变量
使用DECLARE语句
DECLARE 变量名 数据类型(大小) DEFAULT 默认值;
可以声明一个名为total_sale的变量,
数据类型为INT,
默认值为0
DECLARE total_sale INT DEFAULT 0;

声明共享相同数据类型的两个或多个变量
DECLARE x, y INT DEFAULT 0;
分配变量值
要为变量分配一个值,可以使用SET语句
SET total_count = 10;
使用SELECT INTO语句将查询的结果分配给一个变量
SELECT COUNT(*) INTO total_products FROM products
变量的范围
如果在存储过程中声明一个变量,
那么当达到存储过程的END语句时,
它将超出范围,
因此在其它代码块中无法访问

存储过程参数:
三种类型:
IN
表示调用者向过程传入值(传入值可以是字面量或变量)
OUT
表示过程向调用者传出值
INOUT
INOUT参数是IN和OUT参数的组合。

定义参数
create produce name(模式,参数名称 数据类型(大小))
存储过程语句:

IF语句IF expression THEN 
   statements;
END IF;IF expression THEN
   statements;ELSE
   else-statements;
END IF;CASE语句CASE  case_expression
WHEN when_expression_1 THEN commands
WHEN when_expression_2 THEN commands
 ...ELSE commands
END CASE;

循环WHILE expression DOstatements
END WHILEREPEAT
statements;
UNTIL expression
END REPEAT

webp

查看所有存储过程
SHOW PROCEDURE STATUS;
查看指定数据库中的存储过程
SHOW PROCEDURE STATUS WHERE db = 'My_test4';
查看指定存储过程源代码
SHOW CREATE PROCEDURE 存储过程名

webp



作者:撩课_高新强
链接:https://www.jianshu.com/p/047d0d839b07


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP