mysql中的存储过程
2021/6/18 2:05:36
本文主要是介绍mysql中的存储过程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
建表
CREATE TABLE if not exists `admin` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(10) NOT NULL, `password` varchar(10) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB CHARSET=utf8; insert into admin(username,password) values ('php','999'), ('javascript','000'), ('java','444'), ('html','444'), ('python','333'); select * from admin;
存储过程简单来说就是把几句sql语句放在一起,一起执行
1.要用delimiter把结束标志改掉
因为每行sql语句都要用;结尾,编辑器看到;号就会直接运行,一段存储过程就被拆得七零八落了,所以我们用delimiter把结束标志;改成美元$
delimiter $ 要放在第一行
然后存储过程中的sql语句后面还是以;结束,但是不会再自动运行了
整个存储过程以$ 结尾
往后的要运行的语句也要$结尾
举例
无参存储过程
#把默认结束标记;改成$ delimiter $ #创建存储过程 mypro() create procedure mypro() begin insert into admin(username,password) values ('vb','333'), ('vc','444'); delete from admin where id =6; end $
建好后,在navicat15中显示在函数里面
上面只是创建了一个存储过程,相当于把几行sql语句存储了起来,但是并没有运行
运行还需要调用一下
call mypro()
这样就运行了,再来查看一下结果,先插入6和7,然后删除6,结果没错
带in参数的存储过程
#创建带in参数的存储过程 delimiter $ create procedure myproin(in name varchar(20)) begin delete from admin where username = name; select * from admin; end $ #调用存储过程 call myproin('java') $
在存储过程中存了两句语句
一句是带输入参数的删除语句
一句是查询,调用后直接就显示结果了,省得再查询,而且存储过程里只放一句sql也不像样,加一句凑数
调用时传入参数'java',运行后成功删除第3行的java
再建一个带两个in参数的存储过程
两个参数就可以代替用户名和密码了
delimiter $ create procedure myproin3(in name varchar(20),in psw varchar(20)) begin #定义一个局部变量 declare result int default 0; #把查询到的数值赋值给局部变量 select count(*) into result from admin where username=name and password=psw; #什么都有,不知道还要java干嘛 select IF(result>0,'登陆成功','登陆失败'); end $
测试一下,先输入一个存在的,再输入一个不存在的
带OUT参数的存储过程
delimiter $ #out参数就相当于一个自定义变量 CREATE PROCEDURE `myproout`(in name varchar(20),out psw varchar(20)) begin #把查询结果赋值给out参数 select password into psw from admin where username=name; select psw; end $
调用
#这里OUT参数要写变量@.... call myproout('php',@psw)$
调用结果
带INOUT参数的存储过程
delimiter $ create procedure myproinout(inout a int,inout b int) begin set a = 2*a; set b = 2*b; select a,b; end $
调用
调用的时候还在delimiter $运行窗口的话,结尾要用$,不是的话结尾就可以用回;
这篇关于mysql中的存储过程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-25MySQL报错Duplicate entry '0' for key 'PRIMARY'
- 2024-05-29阿里 Canal 实时同步 MySQL 增量数据至 ClickHouse 数据库
- 2024-05-24在Linux下管理MySQL的大小写敏感性
- 2024-04-26MySQL查出时间比实际晚8小时的解决方案
- 2024-04-01JPA不识别MySQL的枚举类型
- 2024-03-30mysql数据库表卡死解决方法
- 2024-03-15MySQL多数据源笔记5-ShardingJDBC实战
- 2024-03-11natural join mysql
- 2024-03-11关于VS2017,VS2015 中利用 EF使用Mysql 不显示数据源问题解决方案
- 2024-02-26mysql 阿里云xb后缀备份文件恢复-icode9专业技术文章分享