MySql储存过程笔记
存储过程简介
在开发过程种常常会重复使用某些sql语句,为此MySql
sdsd
先创建一个表
create table user{
id int primary key auto_increment,
username varchar(25) not null,
password varchar(25) not null
};
insert user(username,password) values('jacklove','qqqqqq');
insert user(username,password) values('uzi','jiandinglong');
insert user(username,password) values('clearlove','777777');
创建无参存储过程
drop procedure if exists proced_name # 如果某条存储过程存在,删除它
delimiter // # 结束符设置为'//'
create procedure query_user_all()
begin
select * from user;
end //
delimiter ; # 换回结束符
调用存储过程
call query_user_all();
有参存储过程
规则 【in 表示输入, out 表示输出 inout 表示存储过程传入和传出】
drop procedure if exists query_user_by_username;
delimiter //
create procedure query_user_by_username(in _name varchar(255), out _id int)
begin
select id from user where username = _name into _id
end //
delimietr ; # 换回结束符
调用有参存储过程
set @_name = 'jacklvoe';
call query_user_by_username(@_name, @_password);
select @_password as password ;
其他相关操作
查询所有的存储过程
select name from mysql.proc where db='数据库名';
查询某个存储过程
show create procedure 存储过程名;
存储函数
存储函数与存储过程最大的区别就是存储函数有return返回值,而过程用out参数代替return
格式与过程有点不同, 创建的关键字为function
delimiter // # 更改结束符
create function func_query_pwd(name varchar(50))
returns varchar(50) # 指定返回类型
begin
declare out_pwd varchar(50); # 定义返回的变量
select password into out_pwd from user where username = name; # 用out_pwd接收password的值
return out_pwd;
end //
delimiter ;
要记得把结束符改回来: delimiter ;
调用存储函数
用户自定义的存储函数与MySQL内部函数性质相同,所以用select
select func_query_pwd('uzi');
参靠
(1)https://www.cnblogs.com/nnngu/p/8463399.html
(2)https://blog.csdn.net/pan_junbiao/article/details/86307126