mysql存储过程的创建以及使⽤MySQL中的IN、OUT、INOUT类型
in: 使⽤IN类型来传递信息,存储过程内部可以对参数的值进⾏修改,但是修改后的值调⽤者不可见。
out: OUT参数⽤于传值给调⽤者,存储过程内部,该值的默认值为NULL,⽆论调⽤者是否传值给存储过程inout: INOUT类型可以向存储过程传递信息,如果值改变,再返回给调⽤者
1、 选择数据库
mysql>use youoil;
2 、查询当前数据库有哪些存储过程
mysql>show procedure status where Db='youoil';
查询结果图:
3、创建⼀个存储过程
1、创建⼀个简单的存储过程
mysql>create procedure hi() select 'hello';
2、存储过程创建完毕,看怎么调⽤它
mysql>call hi();
调⽤结果图:
4、删除存储过程:
drop procedure hi drop procedure-命令 hi-存储过程名
第⼆部分:创建⼀个有两个参数的存储过程
⼀、MySQL 创建存储过程
“absum” 是个简单的 MySQL 存储过程,这个存储过程有两个 int 类型的输⼊参数 “a”、“b”,返回这两个参数的和。删除是否已经有的absum存储过程
drop procedure if exists absum;
-- 计算两个数之和并且使⽤sum命名
create procedure absum(in a int,in b int)
begin
declare c int;
if a is null then
set a=0;
end if;
if b is null then
set b=0;
end if;
set c = a + b;
为什么idea不建议中文插件select c as sum;
end;
代码执⾏效果
调⽤存储过程:
call absum(1,5)
第三部分 存储过程关联数据库查询
#通过给变量赋值
youoil 有t_user表
创建存储过程
create procedure sUserid(in id int)
begin
declare userName VARCHAR(50);
select u.USER_NAME INTO userName from t_user u where u.ID=id ;
select userName;
end;
执⾏操作
call absum(5);
(2) OUT模式 : 参数输出模式
CREATE PROCEDURE user_main_pro2(OUT v_count INT)
BEGIN
SELECT COUNT(*) INTO v_count FROM t_user_main;
END
调⽤:
定义存储过程user_main_pro2⽤于计算t_user_main表的⽤户总数,处理完后通过参数out模式返回处理结果,命令窗⼝通过set @v_count = 1;定义变量并初始化,通过定义的变量去接受存储过程处理完成out输出的结果,最后通过select @v_count查看接受后的变量值,也即是存储过程处理完成的结果。
初学者学python好还是java好>大一程序设计基础习题答(3) INOUT模式 : 作为输⼊和输出模式
mysql查看所有存储过程CREATE PROCEDURE user_main_pro3(INOUT v_id INT)
BEGIN
# 定义变量
DECLARE v_count INT(11);
# 判断
IF v_id > 3 THEN
SET v_count = 100;
ELSE
SET v_count = 500;
END IF;
# 返回赋值
obsceneSET v_id = v_count;
switch玩法END ;
调⽤:
新建存储过程user_main_pro3,参数模式为INOUT模式,该模式参数既作为输⼊,也可作为输出。定义⼀个变量 set @v_id=1,通过call user_main_pro3(@v_id)调⽤存储过程,
将参数@v_id输⼊后满⾜判断的else,存储过程处理结果为500,同时也通过
变量@v_id接受存储过程处理的结果。
所以,INOUT模式参数v_id既可以作为输⼊,也可以作为输出。
mybatis调⽤存储过程
数据库表的创建
DROP TABLE IF EXISTS `cus_device`;
CREATE TABLE `cus_device` (
`device_sn` varchar(20) NOT NULL COMMENT '设备编号',
`device_cat_id` int(1) DEFAULT NULL COMMENT '设备类型',
`device_name` varchar(64) DEFAULT NULL COMMENT '设备名称',
`device_type` varchar(64) DEFAULT NULL COMMENT '设备型号',
PRIMARY KEY (`device_sn`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
创建存储过程
以设备的名称为输⼊参数,以统计到设备的总数为输出参数
DROP PROCEDURE IF EXISTS `countDevicesName`;
DELIMITER ;;
CREATE PROCEDURE `countDevicesName`(IN dName VARCHAR(12),OUT deviceCount INT)
BEGIN
SELECT COUNT(*) INTO deviceCount FROM cus_device WHERE device_name = dName;
END
;
;
DELIMITER ;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论