存储过程是由过程化SQL语句的书写过程。这个过程经编译和优化后存储在数据库服务器中,因此称它为存储过程,使用时只要调用即可。
(其实就是为了以后使用而保存的一条或多条mysql语句的集合,是没有返回值的函数)
提高了安全性,完整性,性能。
创建:
delimiter //
create procedure getname()
begin
select Sage from student;
end//
delimiter ;
执行存储过程:
call getname();
查看过程创建:
show create procedure getname\G
删除存储过程:
drop procedure getname;
对于带参数的存储过程:
mysql支持
in(传递给存储过程)
out(从存储过程传出)
inout(对存储过程传入和传出)
三种类型的参数。
创建有参数的过程:
create procedure productprice(
out pl decimal(8,2),
out ph decimal(8,2),
out pa decimal(8,2)
)
begin
select min(prod_price)
into p1
from products;
select max(prod_price)
into ph
from products;
select avg(prod_price)
into pa
from products;
end;
调用有参数的过程:
call productprice(
@pricelow,
@pricehigh,
@priceaverage
);
栗子2:
create procedure ordertotal(
in onumber int,
out ototal decimal(8,2)
)
begin
select sum(item_price * quantity)
from orderitems
where order_num = onumber
into ototal;
end;
执行过程:
call ordertotal(20005, @total);
查看:
select @total;