存储过程的好处:
- 存储过程因为sql语句已经预编译过了,因此效率会比较快一点。
- 存储过程可以接受参数,返回参数,返回多个或返回结果集。
- 在单个存储过程可执行一系列sql语句。
- 存储过程里可以调用存储过程,以此来满足复杂的业务需求。
存储过程的创建:
语法:
Greade procedure 存储过程名(过程参数1,参数2)
begin
//内容
end;
过程的调用:
call 过程名(参数1,参数2);
存储过程的删除:
drop procedure 存储过程名;
不能在存储过程中删除另一个存储过程,只能调用。
信息查看:
1.显示存储过程信息
show greate procedure 存储过程名;
2.显示数据库中所有的存储过程的信息,包括数据库,存储过程名,创建时间。
show procedure status;
完整的存储过程案例:
#完成取款或存款业务
#张三的卡号取款900元,李四的卡号存款5000元
drop PROCEDURE if exists ps_tradeinfo;
create PROCEDURE ps_tradeinfo(cardid1 varchar(50),money int,transtype1 varchar(50) ,err varchar(50))
b:BEGIN
DECLARE balance1 int ;
if transtype1='取款' THEN
SELECT balance into balance1 from cardinfo where cardid=cardid1;
if balance1<money+1 THEN
SELECT @err:='卡中余额不足';
LEAVE b;
ELSE
insert into tradeinfo(cardid,transtype,transmoney)VALUES(cardid1,'取款',money);
update cardinfo set balance=balance-money where cardid=cardid1;
end if ;
ELSEif transtype1='存入' THEN
insert into tradeinfo(cardid,transtype,transmoney)VALUES(cardid1,'存入',money);
UPDATE cardinfo set balance=balance+money where cardid=cardid1;
end if;
end;
set @err='';
call ps_tradeinfo('1010 3576 1212 4444','200','存入',@err);
SELECT * from tradeinfo;