1.什么是存储过程?
将一组预先编译好的SQL语句的集合,存放在一个特定的文件中。类似于JAVA中的方法。
2.存储过程的工作原理
将存储过程预先编译好的SQL语句集合称为集合A,里面包含SQL1、SQL2、SQL3…许多句需要在项目中使用的SQL语句。
①当应用在调用SQL集合时可以直接调用集合A而不需要一个一个的调用SQL语句。
②当系统在第二次调用这些SQL语句执行某些功能的时候,它会先去查看是否已经有编译过的SQL语句,当发现集合A有符合的情况时,会直接调用A。
③假设没有存储过程,也就是SQL1、SQL2、SQL3…这几个SQL语句是相互独立的,当系统完成一个功能时需要执行这三个SQL,也就是完成某功能时要连接三次数据库服务器。所以存储过程可以将三次连接减少到一次,提高了连接效率。
3.存储过程的好处
1.提高SQL语句的重用性;
2.简化编译操作;
3.减少了编译次数,减少和数据库服务器的连接次数,提高效率;
4.存储过程的创建及使用
4.1 创建语法
# 设置结束标志
delimiter $
#创建存储过程
create procedure 存储过程名(参数模式 参数名 参数类型)
begin
SQL1;
SQL2;
SQL3;
...
end $
参数模式分为三种:
IN :该参数可以作为输入,需要调用方传入参数值;
OUT:该参数可以作为输出,可以作为方法的返回值;
INOUT:该参数既可以作为输入,也可以作为输出;
4.2 调用语法
#调用存储过程
call 存储过程名(实参列表)$;
4.3 示例
1.检测用户是否可以成功登陆(包含用户名和密码)
#创建存储过程
delimiter $
create procedure mp4(IN username varchar(20),IN password varchar(20))
begin
declare result INT default 0;
select count(*) into result
from admin
where admin.username=username and admin.password=password;
select if(result>0,'成功','失败');
end $
#调用存储过程
call mp4('john','1234')$