个人的一些学习总结,各位大牛给指正指正。

存储过程

存储过程的含义
一组预先编译好的sql语句的集合。
优点:
1、提高代码的重用性。
2、简化代码编写。
3、减少了编译次数和服务器的连接次数,提升了效率。

一、创建存储过程

格式

create procedure 存储过程名称(参数列表)
	begin
		存储过程体(一组sql语句)
	end

注意点:

  1. 参数包含三个部分:参数模式、参数名、参数类型
#举例
create procedure myp1(in stu_name varchar(20))
begin
	
end
  1. 参数模式总共有三种
  • in:表示这个参数是入参,在调用这个过程的时候必须传入实际参数。
  • out:表示这个参数是输出参数,实际上这个参数就是过程的返回值。
  • inout:即是传入参数,又是输出参数。
  1. 存储过程编写规则
  • 如果存储过程体只有一句sql,那么begin end 可以省略。
  • 存储过程体中的每一句sql语句必须结尾,必须使用;结束。
  • 必须标记其他符号作为结束符号,使用delimiter来标记。

创建无参的存储过程

#创建无参存储过程,往admin表中插入5笔数据。
#将$作为结束符
delimiter $;
create procedure myp1()
begin
	insert into admin(username,password)
	values('jhon','123'),
	values('lucy','123'),
	values('lili','123'),
	values('tom','123'),
	values('rose','123');
end $

in模式 两个参数的存储过程

-- -------------------带in模式 两个参数的存储过程-------------------
 #传入用户名和密码,显示用户是否登录成功
 delimiter $;
 create procedure myp3(in user_name varchar(20),in pass_word varchar(20))
 begin
 	declare result int;	#定义局部变量,接收查询结果
 	select count(*) into result 
 	from admin 
 	where username = user_name and password = pass_word;
 	#查看变量result的值,如果不为0,说明数据中有此用户,输入success
 	select if(result>0,'success','fail');
 end $

带in、out模式参数的存储过程

-- -------------------带out模式参数 的存储过程-------------------
#传入用户名和密码,返回用户登录成功或失败的消息
delimiter $;
create procedure myp4(in user_name varchar(20), in pass_word varchar(20),out res varchar(10) )
begin 
	declare result int;#定义局部变量,接收查询结果
	SELECT COUNT(*) INTO result 
	FROM admin 
	WHERE username= user_name AND PASSWORD = pass_word;
	SELECT IF(result>0,'success','fail') INTO res;
end $

二、调用存储过程

  • call 存储过程名称(参数列表)
#调用上建立的myq1存储过程
	call myp1();
	call myp3('tom','123');
	
	#有返回参数
	call myp4('rose','123',@result);
	#查看返参数的值
	select @result;

三、删除存储过程

  • drop procedure 存储过程名称
#删除单个
drop procedure myp3;

#删除多个
drop procedure myp3,myp4;

四、查看存储过程

show create procedure 存储过程名

show create procedure myp3;