Mysql存储过程和函数
- 基本概念:
创建存储过程和函数是指将经常使用的一组SQL语句的组合在一起,并将这些SQL语句当作一个整体存储在MySQL服务器中。例如,银行经常需要计算用户的利息。不同类别的用户的利率是不一样的。这就可以将计算利率的SQL代码写成一个存储过程或者存储函数。只要调用这个存储过程或者存储函数,就可以将不同类别用户的利息计算出来。
- 创建存储过程
delimiter $$;
create procedure 名称(参数列表)
begin
SQL语句块
end
$$;
delimiter;
- 存储过程中变量的定义、参数类型和传参
变量定义:–declare 变量名 数据类型 default 默认值
参数类型:
–in参数:表示该参数的值必须在调用存储过程之前指定,在存储过程中修改的值不能被返回,也就是调用的时候就得指定,默认传入的就是in参数
举例:
–out参数:该值可在存储过程内部改变,并可以返回.往往是用于获取存储过程里的参数值。
–inout参数:该值可以在调用时指定,并可修改和返回。
传参:–create procedure test_p( in 参数名 参数类型,out 参数名 参数类型)
举例:
delimiter $$;
create procedure test_p8(id int,out phone int,inout s_name varchar(20))
begin
declare sex varchar(10) default '男';
set id = id+1;
set phone = 186125312;
select s_name;
set s_name = 'BESTTEST';
insert into students values (id,s_name,phone,sex);
end
$$;
delimiter;
set @phone=99888;
set @s_name='besttest'
call test_p8(70,@phone,@s_name);
select * from students;
select @s_name;
- 存储过程中语句
1) if条件判断:
if 条件 then
语句
elseif 条件 then
语句
else
语句
end if;
2) case条件判断:
case value
when 条件 then
sql语句
when 条件2 then
sql语句
else#如果上面条件都不满足的话执行
sql语句
end case
3) while循环:
while 条件 do
sql语句
end while;
4) repeat循环:
repeat
sql语句
until 条件
end repeat;
- 创建函数
函数和存储过程类似,区别是函数有返回值,存储过程没有返回值。
create function 函数名( 变量1,变量2.....)
returns 数据类型
begin
......执行的程序代码
return 数据;
end;
- 查看存储过程和函数
show procedure status;
show function status;
show create procedure;
show create
- 删除存储过程或函数
drop { procedure| function } sp_name;