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;
157

被折叠的 条评论
为什么被折叠?



