Delimiter (分隔符) 声明新的结束符 (任选,避免在mysql环境下下有特殊含义)
Create procedure(过程) p_name(in c_name 数据类型)创建
、参数应用
IN输入参数的应用
Set @x=3;赋值
Select@x;
嵌套
Createprocedure p15()
Begin
Declare v1char(10) default ‘outer’; //后执行
Begin
Declare v1 char(10) default ‘inner’; //先执行
Select v1;
End;
Select v1;
End//
Drop procedure p15;删除存储过程
流程控制结构(p134-136)
条件分支结构
语法
IF 条件 then 语句集合
Elseif 条件 then 语句集合
End if;
Call p();
Select @a;
注意:
形参中的变量如果和存储过程中的局部变量同名,会‘覆盖‘;
形参变量在存储过程中无大小写的要求;
赋值:Select中用:=,set用=
练习:创建存储过程,如果参数>60分,给t1表插入数据0
Case 变量
When 变量取值1 then 语句集合
When 变量取值2 then 语句集合
Else 语句集合
End case;
或
Case
When变量与值1表达式then 语句集合
When变量与值2表达式then 语句集合
Else 语句集合
End case;
循环结构
While end while
Loop end loop
Repeat end repeat
Goto (不推荐使用,流程混乱,淘汰)
while v<5 do-------循环的入口(必须满足的条件)
insert into t1 values(v);
set v=v+1;------循环的出口(退出循环的条件)
end while;
end//
call p16();
select * from t1;//是否插入信息
提醒:执行结束后的系统返回是针对最后一条insert 语句
Repeat
Create procedure p17()
Begin
Declarev int;
Setv=0;
Repeat -------循环的入口(必须满足的条件)
Insertinto t1 values(v);
Set v=v+1;
Until v=5; ------循环的出口(退出循环的条件)
End repeat;
End//
Create procedure p18()
Begin
Declare v int;
Setv=0;
Loop_label LOOP
Insert into t1 values (v);
Set v=v+1;
If v>5 then
Leave loop_label;
End if;
End//
四、select。。。。into 变量列表
只能应用在存储过程
Create procedure p19(out para1 char(20))
Being
Select s1 into para1 from t1; ---返回并保存
End//
Select 返回结果:表、列、行(指针)、值
游标(当做指针来对待)
步骤:
创建游标declare
打开游标open
获取记录fetch
关闭游标close