MySql--存储过程
2022/8/17 2:54:28
本文主要是介绍MySql--存储过程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
MySql--存储过程
创建
DELIMITER $$ -- 代表执行分隔符(原来是;这里重新定义为$$) USE `furn_ssm`$$ -- 存储过程建立在数据库下,这里指使用数据库furn_ssm DROP PROCEDURE IF EXISTS `p1`$$ -- 这里保证删去同名存储过程,如果存在的话 CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`(IN a INT, IN b INT, OUT c INT) BEGIN SET c = a + b; END$$ DELIMITER ; -- 代表执行分隔符(这里重新恢复为;) ######################################################## 分割线 DELIMITER $$ USE `furn_ssm`$$ DROP PROCEDURE IF EXISTS `p2`$$ CREATE DEFINER=`root`@`localhost` PROCEDURE `p2`(IN a INT, OUT r INT) BEGIN DECLARE `x` INT DEFAULT 0; -- 定义局部变量x,默认值为0 DECLARE `y` INT DEFAULT 0; -- 定义局部变量y,默认值为0 SET `x` = a*a; SET `y` = a/2; SET r = `x`+`y`; END$$ DELIMITER ; ######################################################## 分割线 DELIMITER $$ USE `furn_ssm`$$ DROP PROCEDURE IF EXISTS `p3`$$ CREATE DEFINER=`root`@`localhost` PROCEDURE `p3`(OUT `sum` INT) -- 输入输出可以标记为inout,标识为即可输入,又可输出 BEGIN SELECT COUNT(id) INTO `sum` FROM furn; -- 通过into来赋值 END$$ DELIMITER ;
使用
-- 使用p1 SET @m = 0; -- 定义用户变量 CALL p1(3,2,@m); -- 使用存储过程 SELECT @m FROM DUAL; -- 显示结果 -- 使用p2 SET @mm = 0; CALL p2(6,@mm); SELECT @mm FROM DUAL; -- 使用p3 SET @mmm = 0; CALL p2(6,@mm); SELECT @mm FROM DUAL;
执行控制
分支语句
-- 单分支 if conditions then --SQL end if; -- 双分支 if conditions then --SQL else --SQL end if; -- 多分支 case 变量 when conditions then --SQL when conditions then --SQL when conditions then --SQL when conditions then --SQL else --SQL end case;
循环语句
-- while declare i int; set i = 0; while i<3 do --SQL set i = i + 1; end while; -- repeat declare i int; set i = 0; repeat --SQL set i = i + 1 until i > 3 end repeat; -- loop declare i int; set i = 0; myloop:loop -- SQL set i = i + 1 if i = 3 then leave myloop; end if; end loop;
查询、修改、删除
-- 查询指定数据库下的存储过程 SHOW PROCEDURE STATUS WHERE db='furn_ssm' -- 查询存储过程的创建细节 SHOW CREATE PROCEDURE furn_ssm.p1 -- 修改存储过程的是修改存储过程的特征 alter procedure <proc_name> 特征1 [特征2 特征3 ....] -- 具体特征和使用自行百度 -- 删除 drop procedure furn_ssm.p1
游标(结果集)
-- 语法,声明游标并指向一个结果集 declare cursor_name cursor for select_statement;
参考链接
https://www.csdn.net/tags/OtDaIg5sMDUxMy1ibG9n.html
https://www.cnblogs.com/wjoyxt/p/5420582.html
https://www.bilibili.com/video/BV1qb4y1Y722
这篇关于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专业技术文章分享
- 2024-02-22docker mysql 5.7
- 2024-02-18从 20 多套 MySQL 到 1 套 TiDB丨骏伯网络综合运营管理平台应用实践
- 2024-02-07mysql 外键索引入门介绍,为什么工作中很少有人使用?