mysql(6.存储过程)

自定义函数:对mysql拓展
参数:0个或者多个
返回值:只能有一个
复合结构:BEGIN…END

sql命令-》mysql引擎分析-》语法正确-》可识别命令执行-》执行结果返回-》客户端
存储过程:sql语句和控制语句的预编译集合,以一个名称存储并作为一个单元处理
优点:1增强功能和灵活性
2实现较快的执行速度
3减少网络流量

创建存储过程:create procedure
in:输入
out:输出
INOUT:
过程体:合法的sql语句
任意sql语句
复合结构则使用begin。。。end语句
创建存储过程:
在这里插入图片描述
调用存储过程:
在这里插入图片描述

创建带有IN类型的存储过程
建表
插入数据
在这里插入图片描述
查看结构与数据
在这里插入图片描述
先改结尾的标识符
创建过程体
id+=id会删除整个数据
在这里插入图片描述
这个才是正确的
在这里插入图片描述
删除数据id=22的那一行
在这里插入图片描述
创建带有IN和OUT类型参数的过程体:
局部变量:的作用范围在BEGIN AND之间有效
CREATE PROCEDURE removeUserAndReturnUsersNums(IN p_id INT UNSIGNED,OUT userNums INT UNSIGNED)
-> BEGIN
-> DELETE FROM users WHERE id=p_id;
-> SELECT COUNT(id) FROM users INTO userNums;
-> END
-> //
用户变量:与客户端绑定@nums

在这里插入图片描述
在这里插入图片描述
用户变量
在这里插入图片描述
创建带有多个out类型参数的存储过程:
根据年龄删除用户:返回删除用户 返回剩余用户
ROW_COUNT()函数:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
创建过程体
36-20+1-4=13
13条记录删除age=23的四条记录还剩9条。
在这里插入图片描述在这里插入图片描述
存储过程与自定义函数的区别:
存储过程功能要复杂一点:1可以返回多个值 2通过CALL来执行
函数针对性更强:1函数只有一个返回值 2作为其他sql语句的组成部分
修改存储过程:
只能先删除存储过程,再创建

猜你喜欢

转载自blog.csdn.net/weixin_43842098/article/details/87908359