mysql存储过程和函数

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;

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: