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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的 MySQL 存储过程存储函数的实验。 首先,创建一个测试表 test_table,包含两个字段 id 和 name: ```sql CREATE TABLE test_table ( id int(11) NOT NULL AUTO_INCREMENT, name varchar(50) NOT NULL, PRIMARY KEY (id) ); ``` 接着,我们创建一个存储过程,用于向 test_table 中插入数据: ```sql DELIMITER // CREATE PROCEDURE insert_data() BEGIN DECLARE i INT DEFAULT 1; WHILE (i <= 10) DO INSERT INTO test_table (name) VALUES (CONCAT('Name ', i)); SET i = i + 1; END WHILE; END // DELIMITER ; ``` 该存储过程名为 insert_data,它使用了一个 WHILE 循环来向 test_table 中插入 10 条数据,每个数据的 name 字段都是 'Name ' 加上当前循环次数 i。 接下来,我们创建一个存储函数,用于统计 test_table 中数据的数量: ```sql DELIMITER // CREATE FUNCTION count_data() RETURNS INT BEGIN DECLARE count INT; SELECT COUNT(*) INTO count FROM test_table; RETURN count; END // DELIMITER ; ``` 该存储函数名为 count_data,它使用了一个 SELECT COUNT(*) 查询来统计 test_table 中数据的数量,并将结果赋值给 count 变量,最终返回 count。 现在,我们可以分别调用 insert_data 存储过程和 count_data 存储函数来测试它们的效果: ```sql CALL insert_data(); SELECT count_data(); ``` 执行后,我们可以看到 test_table 中已经插入了 10 条数据,同时 count_data 函数返回的结果也是 10。 这就是一个简单的 MySQL 存储过程存储函数的实验。当然,实际使用中还有很多更复杂的情况需要考虑和处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值