存储过程相当于没有返回值的函数
存储函数相当于有返回值的函数
创建存储过程
delimiter $
CREATE PROCEDURE pro_name([in|out|inout] 参数名 参数类型, ···)
BEGIN
CODE;
END$
delimiter ;
set @name = ele; # 定义一个名为name的变量,值为ele,,不需要指定类型;
select @name; # 打印name
# 一个@属于用户变量 @@属于系统变量
调用
call pro_name(参数);
删除存储过程
DROP PROCEDURE pro_name;
查看存储过程
SHOW procedure status;
SHOW procedure status\G; # 命令行模式
SHOW CREATE PROCEDURE proc_name; # 查看创建代码
修改存储过程
ALTER PROCEDURE
声明变量
declare name type default num;
变量赋值
set name = 10;
select count(*) into name from table_name;
IF判断
if condition then
statement;
elseif condition then
statement2;
else
statement3;
end if;
case结构
# 类似 switch
CASE var
when var = '' then
statement;
when var = '' then
statement2;
else
statement3;
end case;
#################################
CASE
when condition then
statement;
when condition the
statement2;
else
statement3;
end case;
while循环
# 类似C语言while
while condition do
statement;
end while;
repeat循环
repeat
statement;
until condition
end repeat;
loop循环
LOOP_LABLE:loop # 要取别名
statement;
leave LOOP_LABLE;
end loop LOOP_LABLE; # 或者 end loop; 也可以
leave 类似于 break
iterate 类似于 continue
# 要和LABLE 一起用
LABLES 标号:
标号可以用在 begin repeat while 或者 loop 语句前,语句标号只能在合法的语句前面使用。可以跳出循环,使运行指令达到复合语句的最后一步。
来自菜鸟教程
存储函数(与存储过程相似)
delimiter $
CREATE FUNCTION pro_name(参数名 参数类型, ···) # 默认为 in
RETURNS TYPE # 数据类型
BEGIN
CODE;
RETURN ELE;
END$
delimiter ;
调用
# 1
select func_name(ele); # 因为存在返回值
# 2
set @ele = func_name(ele);
select @ele;
删除
drop function func_name;
查看
show function status;
show function status\G;
SHOW CREATE function func_name; # 查看创建代码
修改
ALTER function