mysql存储过程

1.介绍
存储过程:
一组预先编译好的sql语句的集合,批处理语句。具有复用性、简化操作、减少编译的次数、减少和数据库连接的次数的作用。在大型系统中具有广泛的应用。

2. 使用
a.创建

create procedure 存储过程名(参数列表)
 begin
      存储过程体(一组sql语句)
      end
  

注意:
参数列表 包含三个部分:参数模式 参数名 参数类型
参数模式 :in 作为传入值 out 作为返回值 inout 二者皆可
当存储过程体只有一句话时,begin end 可以省略
存储过程体的每条sql语句,必须使用分号表示结束,存储过程的结尾使用delimiter 重新设置

b.调用
call 存储过程名(参数列表) 结束标记

例:

delimiter $
create procedure myp1()
begin
    insert into account (usename, balance) values ('语欣','10000'),('语欣','10000'),('语欣','10000');
end $
call myp1() $
create procedure myp3(in username varchar(10),in password varchar(10))
begin
    declare result varchar(20) default '';
    select count(*) into result from admin where admin.username=username && admin.password=password;
    select if(result>0,'成功','失败');
end $
call myp3('john','8888') $
create procedure myp5(in beautyName varchar(50),out boyName varchar(50),out userCP int)
begin
    select boys.boyName ,boys.userCP  into boyName,userCP from boys left join beauty on beauty.boyfriend_id=boys.id where beauty.name=beautyName;
end $
call myp5('热巴',@bName,@uCP) $
select @bName,@uCP $
create procedure myp6(inout a int,inout b int)
begin
    set a=a*2;
    set b=b*2;
end $
set @n=10 $
set @m=20 $
call myp6(@n,@m) $
select @n,@m $

3.删除
drop procedure 存储过程名
注意:不支持批量删除

4.查看存储过程

show create procedure 存储过程名

5.案例

/*传入时间类型,格式化*/
delimiter $
create procedure t2(in time datetime,out strTime varchar(50))
begin
    select date_format(time,'%Y年%m月%d日') into strTime;
end $

call t2(now(),@time);
select @time;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

但行益事莫问前程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值