存储过程
1.提高代码的重用性
2.简化操作
3.较少了编译次数并减少和数据库服务的链接次数
创建语法
CREATE PROCEDURE 存储过程名(参数列表)
BEGIN
存储过程体
END
注意
1、参数列表包括三部分 参数模式 参数名 参数类型
参数模式
IN:该参数可以作为输入
OUT:该参数可以作为输出
INOUT:该参数既可以作为输入 也可以作为输出
2、如果存储过程体只有一句话,begin end 可以省略。
存储过程体中的每条sql语句的结尾要求必须加分号;
存储过程的结尾可以使用 DELIMITER 重新设置
语法:
DELIMITER 结束标记
DELIMITER $
调用语法
CALL 存储过程名(实参列表)
空参列表
DELIMITER $
create procedure myp1()
begin
INSERT into stu(name,kecheng,fenshu)
values('a','a','a'),('b','b','b'),('c','c','c');
end $
调用
call myp1() $
创建带in模式参数的存储过程
create procedure myp2(in beautyName varchar(20))
begin
select bo.*
from boys bo
right join beauty b on bo.id = b.id
where b.name = beautyName
end $
调用
call myp2('aaa')$
创建out模式的存储过程
create procedure myp5(in beautyName varchar(20),out boyname varchar(20))
begin
select bo.boyname into boyname
from boys bo
inner join beauty b on bo.id = b.boyname
where b.name = beautyName
end $
调用
set @bName$
call myp5('a',@bName$)$
select @bName$
2.返回多个out
create procedure myp6(in beautyName varchar(20),out boyname varchar(20),out userCp int)
begin
select bo.boyname,bo.userCP into boyname,userCp
from boys bo
inner join beauty b on bo.id = b.boyname
where b.name = beautyName
end $
调用
call myp6('a',@bName,@userCp)$
inout 模式参数的存储过程
create procedure myp7(inout a int,inout b int)
begin
set a= a*2;
set b= b*2;
end$ $
调用
set @m=10$;
set @n=20$;
call myp7(@m,@n)$
select @m,@n
存储过程的删除
drop procedure 存储过程名;