1.存储过程(procedure):
是一组完成特定功能的SQL语句集,即一段存放在数据库中的代码,可由声明式SQL语句(例如CREATE语句、SELECT语句、INSERT语句等)和过程式SQL语句(如IF-THEN-ELSE控制结构语句)组成.
2.存储过程的创建、查看、调用和删除
(1)创建:
delimiter//
create procedure存储过程名称(形式参数])(先选择数据库)
beqin
routine body(存储过程体) end $$ delimiter:
注意:可使用DELIMITER命令将MySQL语句的结束标志修改为其他符号:delimiter/….delimiter;
(2)查看:
show procedure status:/create procedure存储过程名称:
(3)调用:
CALL 存储过程名称((实际参数]);
(4)删除:
drop procedure 存储过程名称
8.存储函数(function):
可以分为两种,一种是内置函数,一种是自定义函数。在MySQL中,通常将用户自定义的函数称为存储函数,和MySQL内置函数性质相同,都用于实现某种功能,
4.存储函数的创建。查看、调用和删除
除了调用均与存储过程类似,只需将procedure改成function即可。(1)创建:create function(2)查看:showfunction
(3)调用:select函数名(实参);(不能用call)(4)删除:drop function
5.存储过程与存储函数的异同
(1)相同:
都是过程式数据库对象,都是附有一定功能的代码集合,增删改查操作均类似
(2)不同:
a.存储过程可以有输入和输出参数,但函数只能有输入参数,函数本身就是输出参数 b.存储过程调用:call存储过程名,但函数调用:select函数名(实参) c.存储过程不允许有return语句,但函数必须有return语句
6.变量的定义(声名)、赋值、流程控制语句与游标
局部变量:在过程体的开头声名,在begin…end内总有效
(1)定义:declare 变量名 变量类型
(2)单个赋值语句:set变量名=变量值或表达式(3)列表赋值语句:select列表名into变量名(3)流程控制语句:
a.条件语句:if...then..else.. end if
case 变量名
when...then...end case;
b.循环语句:while…end while;
[标签:LOOP语句列表ENDLOOP[标签;
[标签:]REPEAT 语句列表UNTIL条件表达式ENDREPEAT[标签
(4)游标:是通过select 语句检索出来的结果集,一定要在存储过程或函数使用,不能单独在查询中使用。
操作过程:
定义(声名):declare游标名称-->打开:open 游标名称-->
读取:fetch 游标名称into变量名-->关闭:close 游标名称
用户变量:用户自己定义的变量,存在整个会话中,前面加@符号,与存储过程的输出变量个数相同。系统变量:全局变量和会话变量,前面加@@符号。