17-MySQL存储过程

前面所学习的 MySQL 语句都是针对一个表或几个表的单条 SQL 语句,但是在数据库的实际操作中,经常会有需要多条 SQL 语句处理多个表才能完成的操作。存储过程是一组为了完成特定功能的 SQL 语句集合。使用存储过程的目的是将常用或复杂的工作预先用 SQL 语句写好并用一个指定名称存储起来,这个过程经编译和优化后存储在数据库服务器中,因此称为存储过程。当以后需要数据库提供与已定义好的存储过程的功能相同的服务时,只需调用“CALL存储过程名字”即可自动完成。

举例: 创建一个模糊查询的存储过程

-- 不带返回值的存储过程
create procedure search(name varchar(10)) -- search为存储过程名, name 为参数
begin
	if name is null or name = '' then
		select * from account;
	else
		select * from account where uname like concat('%', name, '%');
	end if;
end;

-- 调用存储过程
call search (null)
call search ('红')


-- 带返回值的存储过程
create procedure search(in name varchar(10), out num int(3)) -- in 代表参数 out代表返回值
begin
	if name is null or name = '' then
		select * from account;
	else
		select * from account where uname like concat('%', name, '%');
	end if;
	select found_rows() into num; -- found_rows() 查到的数据数量
end;

-- 调用存储过程
call search (null, @num)
select @num

版权声明:本文为lichenpengcn原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。