个人的一些学习总结,各位大牛给指正指正。
存储过程
存储过程的含义
一组预先编译好的sql语句的集合。
优点:
1、提高代码的重用性。
2、简化代码编写。
3、减少了编译次数和服务器的连接次数,提升了效率。
一、创建存储过程
格式
create procedure 存储过程名称(参数列表)
begin
存储过程体(一组sql语句)
end
注意点:
- 参数包含三个部分:参数模式、参数名、参数类型
#举例
create procedure myp1(in stu_name varchar(20))
begin
end
- 参数模式总共有三种
- in:表示这个参数是入参,在调用这个过程的时候必须传入实际参数。
- out:表示这个参数是输出参数,实际上这个参数就是过程的返回值。
- inout:即是传入参数,又是输出参数。
- 存储过程编写规则
- 如果存储过程体只有一句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;