一、存储过程的概念:
存储过程就是数据库中保存的一系列SQL命令的集合。也可以将其看作相互之间有关系的SQL命令组织在一起形成的一个小程序。
二、存储过程的优点:
1、提高执行性能:存储过程执行效率之所以高在于普通的SQL语句每次都会对语法分析、编译、执行;而存储过程只是在第一次执行时对语法分析、编译、执行,以后都是对结果进行调用。
2、减轻网络负担:使用存储过程,复杂的数据库操作也可以在数据库服务器中完成。只需从客户端(或应用程序)传递给数据库必要的参数就行,比起需要多次传递SQL命令本身,这大大减轻了网络负担。
3、可将数据库的处理黑匣子化:应用程序中完全不用考虑存储过程的内部详细处理,只需要知道调用哪个存储过程就可以了。
三、SQL展示:
-- 定义一个没有返回值的存储过程
-- 实现模糊查询操作:
-- select * from emp where ename like '%A%';
create procedure mypro01(name varchar(10))
begin
if name is null or name="" then
select * from emp;
else
select * from emp where ename like concat('%',name,'%');
end if;
end;
-- 删除存储过程
drop procedure mypro01;
-- 调用存储过程
call mypro01(null);
call mypro01('R');
-- 定义一个有返回值的存储过程
-- 实现模糊查询操作,同时返回记录条数
create procedure mypro02(in name varchar(10),out num int(3))-- in参数in可以省略不写 out返回值
begin
if name is null or name="" then
select * from emp;
else
select * from emp where ename like concat('%',name,'%');
end if;
select found_rows() into num;-- found_rows()是MySQL中定义的一个函数,用来返回查询结果的条数
end;
-- 调用
call mypro02(null,@num);
select @num;
call mypro02('R',@aa);
select @aa;