mysql(6.存储过程)

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

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

创建存储过程:create procedure
in:输入
out:输出
INOUT:
过程体:合法的sql语句
任意sql语句
复合结构则使用begin。。。end语句
创建存储过程:
mysql(6.存储过程)
调用存储过程:
mysql(6.存储过程)

创建带有IN类型的存储过程
建表
插入数据
mysql(6.存储过程)
查看结构与数据
mysql(6.存储过程)
先改结尾的标识符
创建过程体
id+=id会删除整个数据
mysql(6.存储过程)
这个才是正确的
mysql(6.存储过程)
删除数据id=22的那一行
mysql(6.存储过程)
创建带有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

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