基本概念
存储过程(stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象(针对SQL变成而言)。
与函数对比
相同点:
1、都是为了可重复的执行操作数据库的SQL语句的集合。
2、一次编译,后续执行。
不同点:
1、标识符:函数(function)、存储过程(procedure)
2、函数必须有返回值,存储过程没有返回值。即函数可用于select语句,存储过程则不行。
基本操作
1、创建存储过程
当过程体中只有一条语句时,begin and 可以省略
delimiter $$
create procedure 过程名字(参数列表)
begin
过程体
end
$$
declare ;
案例:求1~100的和
2、查看存储过程
方式一:通过查看procedure状态,查看所有存储过程
show procedure status 【like 'patten'】;
方式二:查看存储过程创建语句
show create procedure 存储过程名;
3、调用存储过程
存储过程也允许提供参数(形参和实参),存储过程的参数也和函数一样,需要指定其类型。
但是存储过程对参数还有额外的要求,它还有自己的一个分类:in、out、inout
call 存储过程名(实参列表);
1、in类型:表示参数从外部传入到里面使用(过程内部使用),可以是直接数据,也可以是保存数据的变量。
2、out类型:表示参数是从存储过程里面把数据保存到变量中,交给外部使用,故传入的必须是变量。如果说传入的out变量本身在外部有数据,那马在进入过程之后,第一件事,就是被清空。设为null
3、inout类型:数据可以从外部传入到内部使用,同时内部操作之后,又会将数据返回给外部。
结果分析:
(1)执行过程分析,out传入变化
(2)执行完过程之后,再次查看参数变化
4、删除存储过程
drop procedure 存储过程名;