mysql存储程序
存储程序包括存储例程(存储过程和存储函数),触发器和事件
创建带有参数的存储过程
create procedure 存储过程名(参数1 类型1,参数2 类型2,...,参数n,类型n)
begin
...
end
create procedure pr2(n float)
begin
select name,price from fruit where price < n;
end
call pr2(10.0);
参数前缀
in默认,该参数的值是只读取的,它接收从外部传递过来的值,并将其作为初始值。在存储过程内部修改了该参数的值后,并不会影响外部变量的值,也就是对调用者不可见。
out 该参数的值是只输出的,它不把接收的从外部传递过来的值作为初始值,初始值始终是null。在存储过程内部修改了该参数的值之后,会影响外部变量的值,也就是对调用者可见。
inout 同时拥有in和out的特点。
对于用户自定义的变量,必须在变量名的前面加上"@"前缀,以表示这是用户自定义的变量,而不是生活费统自带的变量。
存储函数和存储过程基本上是相同的,两者最大的不同在于,在调用存储过程之后,可以返回值也可以不返回值;而在调用存储函数之后,必须返回一个值。
如果想用函数,一定要先确认允许使用存储函数的设置已经开启。
create function fn1() returns float
begin
declare a float;
select avg(price) from fruit into a;
return a;
end;