存储过程:是SQL语句和控制语句的预编译集合,以一个名称存储并作为一个单元处理。
优点:
1、增强SQL语句的功能和灵活性
2、实现较快的执行速度
3、减少网络流量
创建存储过程
delimiter // 把;改成//
create procedure 存储过程的名称 (参数 列名称 数据类型)
begin
过程体;
end
//
delimiter ; 把修改的//改回来
参数(可以是无参)
in:表示该参数的值必须在调用存储过程时指定,不能返回
out:表示该参数的值可以被存储过程改变,并且可以返回
inout:表示该参数在调用时指定,并且可以被改变和返回
过程体:可以是SQL语句,如果是多条语句则用BEGIN..END语句
可能会有多条语句,以;结束, 但是必须先用delimiter 改变符号,不然;会直接结束
调用存储过程
call 存储过程名称 (@变量名称 ,如@a/b/c...)
select @a :显示变量的值
删除存储过程
delete procedure 存储过程的名称
定义变量:declare 变量 数据类型
为变量赋值:set 变量 =值
游标:用来逐条读取查询结果集中的记录,包括声明游标、打开游标、使用游标、关闭游标。
声明游标:declare 游标名称 cursor for 查询语句
打开游标:open 游标名称
使用游标:fetch 游标名称 into 数据
关闭游标:close 游标名称
流程控制
IF语句:if 判断语句 then SQL语句 else SQL语句 end if
CASE语句:case xx (when xxxx then SQL语句) ... end case 和switch..case语句类似
LOOP、LEAVE语句: 循环名称:loop SQL语句 end loop 和for循环类似,如果要退出,在SQL语句加入leave 循环名称
ITERATE语句:ITERATE 循环名称 和continue类似,跳出本次循环
REPEAT语句:repeat SQL语句 until 条件 end repeat 满足条件,跳出循环
WHILE语句:while 判断语句 do SQL语句 end while