目录:
存储过程创建 概念 优点 创建 存储过程调用 存储过程演示 删除存储过程 查看存储过程 修改存储过程
存储过程创建
存储过程是一组已经预先编译好的SQL语句的集合,可以理解为批处理语句(增加流程控制语句),一般在复杂的业务逻辑中才会使用存储过程。
① 提供了代码的可重用性。
② 简化了数据库操作,讲业务逻辑的细节隐藏在存储过程中。
③ 减少了编译次数,减少了网络IO次数,从而提高操作效率。
语法:
delimiter $
create procedure 存储过程的名称(参数列表)
begin
局部变量的定义
多条SQL语句
流程控制语句
end;$注意:如果存储过程中只有一条SQL语句,可以省略begin...end。
参数列表:

in:声明该参数是一个输入型参数,(类似于Java中的形参)。
out:声明该参数为一个输出型参数,(类似于Java的返回值),在一个存储过程中可以定义多个out类型的参数。
inout:声明该参数既可以为输入型参数,也可以为输出型参数。
存储过程调用
语法:
call 存储过程名称(实参列表);注意:实参列表中包含有输出类型的参数
代码实例:
call pro_insert();当调用这个存储过程,会把创建成功的创建过程中的语句执行一遍。
存储过程演示
代码实例:
向b_user表中插入2条数据
#创建存储过程
delimiter $
create procedure pro_insert()
begin
insert into b_user(user_name,sex) values('存储过程1','男');
insert into b_user(user_name,sex) values('存储过程2','女');
end;$
#调用存储过程
call pro_insert();代码实例:
用于向b_user表中插入2条数据,性别由客户输入
#创建存储过程
delimiter $
create procedure pro_insert2(in sex char(1))
begin
insert into b_user(name,sex) values('存储过程a',sex);
insert into b_user(name,sex) values('存储过程b',sex);
end;$
#调用存储过程
call pro_insert2('男');注意:值列表中写字段名称意为让用户来赋值,在后面调用存储过程时需要有该参数值。
代码实例:
用于向b_user表中插入2条数据,用户名和性别由客户输入
#创建存储过程
delimiter $
create procedure pro_insert3(in name varchar(10),in sex varchar(20))
begin
insert into b_user(name,sex) values(name,sex);
insert into b_user(name,sex) values(name,sex);
end;$
#调用存储过程
call pro_insert3('uname','男');判断用户登录,如果用户名和密码输入正确登录成功,否则登录失败。
#创建存储过程
delimiter $
create procedure pro_login(
in name varname(20),
in pwd varchar(20),
out result varchar(20)
)
begin
-- 用于存放查询总行数-- 用于存放查询总行数
declare total int default 0;
-- 讲查询结果赋值给total局部变量-- 讲查询结果赋值给total局部变量
select count(*)
from b_user a
where a.name=name
and a.pwd=pwd;
set result:=if(total=1,'登录成功','登录失败');
end;$
#存储过程如何执行
-- 使用自定义变量
set @result:='';
call pro_login('李四','123',@result);
select @result;删除存储过程
语法:
drop procedure 存储过程名称;查看存储过程
语法:
show create procedure 存储过程名称;修改存储过程
目前,MySQL还不提供对已存在的存储过程的代码修改。
如果要修改可以先删除再进行创建。
DROP -- 删除
CREATE -- 创建