前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL数据库,详解存储过程使用(二)

MySQL数据库,详解存储过程使用(二)

作者头像
用户1289394
发布2021-11-16 11:02:35
1.2K0
发布2021-11-16 11:02:35
举报
文章被收录于专栏:Java学习网Java学习网

示例2:带in参数的存储过程

创建存储过程:

/*设置结束符为$*/

DELIMITER $

/*如果存储过程存在则删除*/

DROP PROCEDURE IF EXISTS proc2;

/*创建存储过程proc2*/

CREATE PROCEDURE proc2(id int,age int,in name varchar(16))

BEGIN

INSERT INTO t_user VALUES (id,age,name);

END $

/*将结束符置为;*/

DELIMITER ;

调⽤存储过程:

/*创建了3个⾃定义变量*/

SELECT @id:=3,@age:=56,@name:='张学友';

/*调⽤存储过程*/

CALL proc2(@id,@age,@name);验证效果:

mysql> select * from t_user;

+----+-----+---------------+

| id | age | name |

+----+-----+---------------+

| 1 | 30 | 路⼈甲Java |

| 2 | 50 | 刘德华 |

| 3 | 56 | 张学友 |

+----+-----+---------------+

3 rows in set (0.00 sec)

张学友插⼊成功。

示例3:带out参数的存储过程

创建存储过程:

delete a from t_user a where a.id = 4;

/*如果存储过程存在则删除*/

DROP PROCEDURE IF EXISTS proc3;

/*设置结束符为$*/

DELIMITER $

/*创建存储过程proc3*/

CREATE PROCEDURE proc3(id int,age int,in name varchar(16),out

user_count int,out max_id INT)

BEGIN

INSERT INTO t_user VALUES (id,age,name);

/*查询出t_user表的记录,放⼊user_count中,max_id⽤来存储t_user中最⼩的id*/

SELECT COUNT(*),max(id) into user_count,max_id from t_user;

END $

/*将结束符置为;*/

DELIMITER ;

proc3中前2个参数,没有指定参数模式,默认为in。

调⽤存储过程:/*创建了3个⾃定义变量*/

SELECT @id:=4,@age:=55,@name:='郭富城';

/*调⽤存储过程*/

CALL proc3(@id,@age,@name,@user_count,@max_id);

验证效果:

mysql> select @user_count,@max_id;

+-------------+---------+

| @user_count | @max_id |

+-------------+---------+

| 4 | 4 |

+-------------+---------+

1 row in set (0.00 sec)

示例4:带inout参数的存储过程

创建存储过程:

/*如果存储过程存在则删除*/

DROP PROCEDURE IF EXISTS proc4;

/*设置结束符为$*/

DELIMITER $

/*创建存储过程proc4*/

CREATE PROCEDURE proc4(INOUT a int,INOUT b int)

BEGIN

SET a = a*2;

select b*2 into b;

END $

/*将结束符置为;*/

DELIMITER ;

调⽤存储过程:

/*创建了2个⾃定义变量*/

set @a=10,@b:=20;

/*调⽤存储过程*/

CALL proc4(@a,@b);验证效果:

mysql> SELECT @a,@b;

+------+------+

| @a | @b |

+------+------+

| 20 | 40 |

+------+------+

1 row in set (0.00 sec)

上⾯的两个⾃定义变量@a、@b作为⼊参,然后在存储过程内部进⾏了修改,又

作为了返回值。

示例5:查看存储过程

mysql> show create procedure proc4;

+-------+-------+-------+-------+-------+-------+

| Procedure | sql_mode | Create Procedure | character_set_client |

collation_connection | Database Collation |

+-------+-------+-------+-------+-------+-------+

| proc4 |

ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ER

ROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |

CREATE DEFINER=`root`@`localhost` PROCEDURE `proc4`(INOUT a int,INOUT

b int)

BEGIN

SET a = a*2;

select b*2 into b;

END | utf8 | utf8_general_ci | utf8_general_ci

|

+-------+-------+-------+-------+-------+-------+

1 row in set (0.00 sec)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java学习网 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档