MySQL|MySQL 存储过程
1、简介
MySQL命令执行过程:
SQL命令 —— MySQL引擎(分析)—— 语法正确 —— 可识别命令 —— 执行(结果)
—— 返回客户端
存储过程:SQL语句和控制语句的预编译集合,以一个名称存储并作为一个单元处理。
存储过程优点:
增强SQL语句的功能和灵活性
实现较快的执行速度
减少网络流量
2、存储过程语法
创建:
CREATE调用:
[DEFINER = {user | CURRENT_USER}]
PROCEDURE sp_name([proc_parameter[,...]])
[characteristic...] routine_body
CALL sp_name([parameter[,...]])有参数时,小括号不能省略
CALL sp_name[()]
删除:
DROP PROCEDURE [IF EXISTS] sp_name【MySQL|MySQL 存储过程】修改:
不能修改过程体
只能修改简单特性
2.1 proc_parameter: [ IN | OUT | INOUT ] param_name type
IN 表示参数的值必须在调用时指定
OUT 表示参数的值可以被存储过程改变,并且可以返回
INOUT 表示参数的调用时指定,并且可以被改变和返回
2.2 characteristic
文章图片
2.3 过程体 合法SQL语句
可以使任意SQL语句(针对记录增删改查,连接)
过程体如果为复合结构则使用BEGIN...END语句
复合结构可以包含声明、循环、控制结构
3、例子 通过DELIMITER 修改定界符,多个语句放在BEGIN...END中
3.1 不带参数
文章图片
不带参数 3.2、带有IN类型参数
CREATE PROCEDURE procedure_name(IN in_name ...)
BEGIN
SQL name = in_name
END
文章图片
带in 参数名字不能与记录表名字相同
3.3 IN&OUT
@ name 用户变量
BEGIN END 中间为局部变量
CREATE PROCEDURE p_name(IN in_name ...,OUT out_name ...)调用
BEGIN
SQL 1
SQL2
END;
CALL p_name(in_name_num,@name)
SELECT @name;
文章图片
例子 3.4 OUT
ROW_COUNT() 受到影响的个数
4、存储过程与自定义函数 前者功能复杂,函数针对性强;
存储过程可以返回多个值,函数只能返回一个值;
存储过程一般独立执行,函数可以作为其他SQL语句组成部分出现
推荐阅读
- 全过程工程咨询——时间管理(12)
- py连接mysql
- 2019-01-18Mysql中主机名的问题
- MySql数据库备份与恢复
- 普通人进阶的三个过程-很多人都知道,但却本末倒置
- Android系统启动之init.rc文件解析过程
- mysql|InnoDB数据页结构
- 会玩才有未来
- mysql中视图事务索引与权限管理
- MYSQL主从同步的实现