MySQL存储过程的编写

本文详细介绍了MySQL存储过程的创建、调用、参数、流程控制、异常处理和游标使用,包括如何定义存储过程、设置参数模式、使用IF、CASE、WHILE等控制结构,以及异常捕获和游标操作,旨在帮助读者深入理解存储过程的运用和管理。
摘要由CSDN通过智能技术生成

存储过程

知识要点
存储过程的创建和调用
存储过程的参数
存储过程体
局部变量
流程控制语句
使用select into查询数据
DECLARE … HANDLER语句
DECLARE … CONDITION语句
游标
过程和数据字典
存储过程的特征
存储过程的安全

存储过程的创建和调用
1.定义:存储过程就是具有名字的一段代码,完成一个特定的功能。存储过程保存在数据字典中

2.语法:
CREATE [DEFINER = { user | CURRENT_USER }] PROCEDURE sp_name ([proc_parameter[,…]]) [characteristic …] routine_body
其中: proc_parameter: [ IN | OUT | INOUT ] param_name type
type: Any valid MySQL data type
characteristic: COMMENT ‘string’ | LANGUAGE SQL | [NOT] DETERMINISTIC | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA } | SQL SECURITY { DEFINER | INVOKER }
routine_body: Valid SQL routine statement

3.存储过程的特点
(1)执行时简单 名字+参数
(2)存储过程中可以有一个或者多个SQL语句
(3)mysql存储过程相对功能较弱,使用较少,

4.为什么要使用存储过程呢?
(1)将重复性很高的一些操作,封装到一个存储过程中,简化了对这些SQL的调用
(2)批量处理 SQL+循环
(3)统一接口

创建一个存储过程

1.存储过程语法,通过示例展示
示例:
创建一个存储过程,删除给定球员参加的所有比赛
DELIMITER − − 将 语 句 的 结 束 符 号 从 分 号 ; 临 时 改 为 两 个 --将语句的结束符号从分号 ; 临时改为两个 ;
CREATE PROCEDURE delete_matches(IN p_playerno INTEGER) ##创建一个存储过程,名字是
delete_matches,in是一个参数(可以省略)
BEGIN ##begin和end 是关键字
DELETE FROM matches
WHERE playerno = p_playerno; ##内部可以是SQL语句
END$$
DELIMITER ; – 将语句的结束符号恢复为分号 ;

调用新建的存储过程,删除8号的所有比赛
call delete_matches(8); ## 8会通过in参数传递给p_playerno,然后传递给where条件里的p_playerno
在这里插入图片描述默认情况下,存储过程和默认数据库相关联。如果想指定过程创建在某个特定的数据库下,那么在过程名前面加数据库名做前缀
在定义过程时,使用DELIMITER 命 令 将 语 句 的 结 束 符 号 从 分 号 ; 临 时 改 为 两 个 命令将语句的结束符号从分号 ; 临时改为两个 ;。这使得过程体中使用的分号被直接传递到服务器,而不会被客户端(如mysql)解释
调用存储过程:call sp_name;

2.通过示例了解循环
示例:
DELIMITER KaTeX parse error: Expected 'EOF', got '#' at position 122: …= 0 ; #̲#设置变量 -> RE…
DELIMITER ;
语句释义:设置循环,变量x初值为1,小于p1时,不断加1

call cunchu(10); ##给p1设置的值为10

select @x ##查看变量x的值

补充:@变量名字的作用
(1)在存储过程中定义,存储中进行处理,例如加减乘除
(2)存储过程外面可以访问这个@变量,这个变量保存了存储过程中对这个变量处理后的值
(3)属于用户变量,直接使用set @x=”一个值”;就可以生成这么一个变量,不需要数据类型

存储过程的参数
1.为什么要有参数?
(1)存储过程需要是多变的
(2)我们可以输入不同的参数,执行不同的操作,处理不同的行,处理的行数不一样等等

2.存储过程可以有0个或多个参数。参数有3种模式:
(1)IN:输入参数,表示调用者向过程传入值。可以是字面量或变量
示例:
DELIMITER C R E A T E P R O C E D U R E d e l e t e m a t c h e s ( I N p p l a y e r n o I N T E G E R ) B E G I N D

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值