Mysql存储过程和函数

时间:2022-02-21 22:53:47

Mysql存储过程和函数

  1. 基本概念:

创建存储过程和函数是指将经常使用的一组SQL语句的组合在一起,并将这些SQL语句当作一个整体存储在MySQL服务器中。例如,银行经常需要计算用户的利息。不同类别的用户的利率是不一样的。这就可以将计算利率的SQL代码写成一个存储过程或者存储函数。只要调用这个存储过程或者存储函数,就可以将不同类别用户的利息计算出来。

  1. 创建存储过程

delimiter $$;

create procedure 名称(参数列表)

begin

SQL语句块

end

$$;

delimiter;

  1. 存储过程中变量的定义、参数类型和传参

变量定义:–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. 存储过程中语句

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;

  1. 创建函数

函数和存储过程类似,区别是函数有返回值,存储过程没有返回值。

create function 函数名( 变量1,变量2.....)

returns 数据类型

begin

......执行的程序代码

return 数据;

end;

  1. 查看存储过程和函数

show procedure status;

show function status;

show create procedure;

show create

  1. 删除存储过程或函数

drop { procedure| function } sp_name;