mysql 第10 天
变量
1 定义 declare
DECLARE var_name[,...] type [DEFAULT value]
例如,定义一个 DATE 类型的变量,名称是 last_month_start:
DECLARE last_month_start DATE;
2 赋值
直接赋值 SET var_name = expr [, var_name = expr] ...
查询结果赋值 SELECT col_name[,...] INTO var_name[,...] table_expr
3 定义条件和处理
定义:
DECLARE condition_name CONDITION FOR condition_value
condition_value:
SQLSTATE [VALUE] sqlstate_value
| mysql_error_code
条件的处理:
DECLARE handler_type HANDLER FOR condition_value[,...] sp_statement
handler_type:
CONTINUE
| EXIT
| UNDO
condition_value:
SQLSTATE [VALUE] sqlstate_value
| condition_name
| SQLWARNING
| NOT FOUND
| SQLEXCEPTION
| mysql_error_code
可以看看P157
光标的使用
在存储过程和函数中,使用光标对结果进行循环的处理
声明光标:
DECLARE cursor_name CURSOR FOR select_statement
OPEN 光标:
OPEN cursor_name
FETCH 光标:
FETCH cursor_name INTO var_name [, var_name] ...
CLOSE 光标:
CLOSE cursor_name
P159 页
流程控制
1 IF句
3 loop语句
4 leave语句
通常和 BEGIN ... END 或者循环一起使用
下面是一个使用 LOOP 和 LEAVE 的简单例子,循环 100 次向 actor 表中插入记录,当插入 100
条记录后,退出循环:
5 iterate语句
用在循环中,作用是跳过当前循环的剩下语句,直接进入下一循环。
6 repeat 语句
有条件的循环控制语句,当满足条件的时候退出循环
7 while语句
小结
本章主要介绍了存储过程和函数的创建、修改的方式,存储过程、函数的适用场合,并介绍
了存储过程和函数中的变量、条件和处理、光标、流程控制的定义和使用,这些对初学者编
写简单的存储过程和函数会有所帮助。虽然使用变量、条件和处理、光标和流程控制可以编
写功能强大的存储过程和函数,并进行复杂的逻辑处理,但是由于篇幅问题,本章并没有对
这部分内容进行深入,读者如果有兴趣的话,可以查询在线的 MySQL 文档获得帮助。
最后要强调的是,存储过程和函数的优势是可以将数据的处理放在数据库服务器上进行,避
免将大量的结果集传输给客户端,减少数据的传输,但是在数据库服务器上进行大量的复杂
运算也会占用服务器的 CPU,造成数据库服务器的压力,所以不要在存储过程和函数中进行
大量的复杂运算,应尽量将这些运算操作分摊到应用服务器上执行。