1、概述
概述:事先经过编译并存储在数据库中的一段sql语句的集合
好处:(1)简化应用开发人员的很多工作
(2)减少数据在数据库和应用服务器之间的传输
(3)提高了数据的处理效率
2、创建与执行
语法(思想类似java的方法)
1、创建
create procedure 存储过程名(参数列表)
begin
存储过程体(一组合法的sql语句)
end
注意:参数列表包含三部分:参数模式 参数名 参数类型 => in stuname varchar(20)
参数模式:
(1)in:可以作为输入
(2)out:可以作为返回值
(3)inout:既可以作为输入,也可以作为输出
a、若存储过程只有一句sql语句的时候begin end可以省略
b、每条sql语句结尾必须加分号
c、存储过程结尾可以使用delimiter $ 充当结束
2、调用
call 存储过程名(实参列表)
例子:
a、空参列表:插入五条数据
(1)创建存储过程
delimiter $ //使得$充当存储过程结束标志
create procedure myp1()
begin
insert into b values(3,3),(4,4),(5,5),(6,6),(7,7);
end $
(2)调用存储过程
call myp1() $
b、创建带in模式参数的存储过程
(1)创建存储过程
delimiter $ //使得$充当存储过程结束标志
create procedure myp2(in classnumber int)
begin
select * from student left join classes
on student.class_number = classes.id
where student_number = classnumber;
end $
(2)调用存储过程
call myp2(2) $ //注意如果是字符型的直接用''单引号导入即可
c、创建带out模式参数的存储过程
(1)创建存储过程
delimiter $ //使得$充当存储过程结束标志
create procedure myp3(in classnumber int,out id int)
begin
select student.id into id //这个into id 意思是把查询出来的结果赋值给参数id
from student left join classes
on student.class_number = classes.id
where student_number = classnumber;
end $
(2)调用存储过程
首先声明变量:set @id $(也可以不声明直接下面那一步)
接着:call myp3(2,@id) $
查看:select @id $
d、创建带inout模式参数的存储过程
(1)创建存储过程
delimiter $ //使得$充当存储过程结束标志
create procedure myp4(inout a int,inout b int)
begin
set a *= 2;
set b *= 2;
end $
(2)调用存储过程
首先,声明变量
set @m = 10 $
set @n = 50 $
其次,执行该存储过程
call myp4(m,n) $
查看
select @m,@n $
3、删除
drop procedure 存储过程名
4、查看结构及信息
show create procedure 存储过程名