格式定义及调用
定义
delimiter +自定义的结束符号
create procedure 储存名 ()
begin
sql语句
end +自定义的结束符
delimiter;
调用
call + 储存名;
变量定义
局部变量
用户自定义,在begin-end块中有效
格式
declare 变量名 变量类型;
举例
declare name varchar(5);
用户变量
用户自定义,当前会话(连接)有效,不需要提前声明,使用及声明
定义格式
set @变量名;
举例
set @ename;
全局系统变量
由系统提供,整个系统有效
操作
-- 查看全局变量
show global variables;
-- 查看某全局变量
select @@global.变量名;
-- 修改全局变量的值
set global sort buffer size = ;
set @@global.sort buffer size = ;
储存过程传参
in
in 表示传入的参数,可以传入数值或者变量,即使传入变量,并不会更改变量的值可以内部更改,仅仅作用在函数范围内。
应用举例
-- 封装有参数的存储过程
delimiter $$
create procedure param (in empno varchar(20))
begin
sql语句;
end $$
delimiter ;
cal param(传入参数);
out
out 表示从存储过程内部传值给调用者
应用实例
流程控制
if判断语句
if语句包含多个条件判断,结果为true false执行语句,与编程语言中的if循环结构类似
if 执行条件
then 执行语句
elseif 执行条件
then 执行语句
...
else 执行语句
end if
case判断语句
语法一
case case_value
when when_value then 执行语句
when when_value then 执行语句
else 执行语句
...
end case
语法二
case
when 执行条件 then 执行语句
when 执行条件 then 执行语句
else 执行语句
...
end case
循环语句
概述
循环是一段在程序中只出现一次,但可能会连续运行多次的代码
循环中的代码会运行特定的次数,或者是运行到特定条件成立时结束循环
循环分类
while
标签:(可用可不用) while 循环条件
do sql语句
end while 标签;
repeat
标签:(可用可不用)
repeat sql语句
until 条件表达式
end repeat 标签;
loop
标签:
loop sql语句
if 判断语句
then leave 标签;
end if ;
end loop;
循环控制
leave 类似于 break,跳出,结束当前所在的循环
iterate类似于 continue,继续,结束本次循环,继续下一次