MySql储存过程与存储函数

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

猜你喜欢

转载自blog.csdn.net/qq_29757633/article/details/102754648