首页 > 数据库 >MySql--存储过程

MySql--存储过程

时间:2022-08-16 00:01:01浏览次数:72  
标签:存储 -- MySql ssm INT SQL PROCEDURE furn

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,ssm,INT,SQL,PROCEDURE,furn
From: https://www.cnblogs.com/shaozelong/p/16590148.html

相关文章

  • leetcode1282-用户分组
    用户分组哈希分类给每一个组别容量分配一个List,存入哈希表中。遍历数组,将当前下标加入对应数量的List中。如果List数量满了,那么将其从map中删除并存入返回值。class......
  • 线段树----区间问题的神
    《标准线段树》  普通的线段树,其区间一般都是一个序列的数的个数,但还是要根据不同题目来判断注意:tr[]空间是N*4,N为最大范围《单点修改,区间查询》原题:https://www.......
  • 《GB28379-2012》PDF下载
    《GB28379-2012便器冲洗阀用水效率限定值及用水效率等级》PDF下载《GB28379-2012》简介本标准规定了机械式便器冲压阀、压力式便器冲洗阀、非接触式便器冲洗阀的用水效......
  • 《GB28373-2012》PDF下载
    《GB28373-2012N类和O类罐式车辆侧倾稳定性》PDF下载《GB28373-2012》简介本标准规定了N和O类罐式车辆侧倾稳定性的术语、定义、限值要求、实车试验法、模拟计算法、......
  • org.apache.ibatis.exceptions.PersistenceException: ### Error building SqlSessio
    解决方案:改为......
  • [AcWing 145] 超市
    贪心+小根堆点击查看代码#include<bits/stdc++.h>usingnamespacestd;typedeflonglongLL;typedefpair<int,int>PII;constintN=1e6+10;intn;......
  • 正则详细讲解
       正则表达式(regularexpression)就是用一个“字符串”来描述一个特征,然后去验证另一个“字符串”是否符合这个特征。比如表达式“ab+”描述的特征是“一个'a'和任......
  • vue简单实现一个table组件
    看到elementUI封装的el-table组件觉得很有意思,就自己简单实现了自己的一个table组件,具体功能有 columns:表头 data:数据 border:是否有边框 zebra:是否有斑马纹 ......
  • mysql和navicat的安装和使用
    昨天把Pycharm安装好了,今天开始安装mysql 数据库。MySql如果电脑上第一次安装mysql,会让注册一个Oracle帐户,浏览器输入:mysqlforwindows 就可以找到,新版本......
  • 在IIS中部署.NET Core WebApi程序(转载)
    环境说明部署NETCore编写WebApi并部署为IIS站点,演示环境如下:VisualStudio2019(v16.8).NetCore3.1一台安装了IIS的设备Note:.NETCore3.0项目开发需要vs2019(......