【基础】存储过程IN、OUT、INOUT参数模式
前言
Github:https://github.com/yihonglei/road-of-arch/tree/master/thinking-in-mysql
概述
MySql 存储过程参数有 IN、OUT、INOUT 三种模式。
一 实例准备条件
创建表:
CREATE TABLE `t_user_main` (`f_userId` int(10) NOT NULL AUTO_INCREMENT COMMENT '用户id,作为主键',`f_userName` varchar(5) DEFAULT NULL COMMENT '用户名',`f_age` int(3) DEFAULT NULL COMMENT '年龄',PRIMARY KEY (`f_userId`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
插入数据:
INSERT INTO t_user_main (f_userName, f_age)
VALUES('one',24),('two',25),('three',26),('four',27),('five',28),('six',29);
二 IN 模式 : 参数输入模式
DELIMITER $$ # 定界符
CREATE PROCEDURE user_main_pro1(IN v_id INT)
BEGIN#定义变量DECLARE v_userName VARCHAR(50);#通过select...into...给变量赋值SELECT f_userName INTO v_userName FROM t_user_main WHERE f_userId = v_id;#执行DDL语句INSERT INTO t_user_main (f_userName) VALUES (v_userName);
END $$ #存储过程创建结束
DELIMITER; #恢复mysql分号定界符
调用:
三 OUT 模式 : 参数输出模式
DELIMITER $$
CREATE PROCEDURE user_main_pro2(OUT v_count INT)
BEGINSELECT COUNT(*) INTO v_count FROM t_user_main;
END $$
DELIMITER
调用:
定义存储过程 user_main_pro2 用于计算 t_user_main 表的用户总数,处理完后通过参数 out 模式返回处理结果,
命令窗口通过 set @v_count = 1; 定义变量并初始化,通过定义的变量去接受存储过程处理完成 out 输出的结果,
最后通过 select @v_count 查看接受后的变量值,也即是存储过程处理完成的结果。
四 INOUT 模式 : 作为输入和输出模式
DELIMITER $$
CREATE PROCEDURE user_main_pro3(INOUT v_id INT)
BEGIN# 定义变量DECLARE v_count INT(11);# 判断IF v_id > 3 THENSET v_count = 100;ELSE SET v_count = 500;END IF;# 返回赋值SET v_id = v_count;
END $$
DELIMITER;
调用:
新建存储过程 user_main_pro3,参数模式为 INOUT 模式,该模式参数既作为输入,也可作为输出。
定义一个变量 set @v_id=1,通过call user_main_pro3(@v_id)调用存储过程,
将参数 @v_id 输入后满足判断的 else,存储过程处理结果为 500,同时也通过
变量 @v_id 接受存储过程处理的结果。
所以,INOUT 模式参数 v_id 既可以作为输入,也可以作为输出。
【基础】存储过程IN、OUT、INOUT参数模式相关推荐
- MySQL 存储过程传参之in, out, inout 参数用法
存储过程传参:存储过程的括号里,可以声明参数. 语法是 create procedure p([in/out/inout] 参数名 参数类型 ..) in :给参数传入值,定义的参数就得到了值 ou ...
- mysql 调用存储过程 inout_MySQL存储过程in、out和inout参数示例和总结
存储过程 1.创建存储过程并查看全局变量 mysql> create database yy; Query OK, 1 row affected (0.00 sec) mysql> use ...
- MySQL 基础 ———— 存储过程与函数
一.存储过程介绍 存储过程是一组预先编译好的SQL语句的集合,可理解成批处理语句.它的优点主要有以下几点: 1.提高代码的重用性: 2.简化操作: 3.减少了编译次数并且减少了和数据库服务器的连接次数 ...
- mysql out_mysql存储过程 in out inout
存储过程的好处 存储过程是一组预编译好的sql语句,用来执行某个特定的功能.这样可以省去sql解析.编译.优化的过程,提高了执行效率,同时,在调用的时候只传一个存储过程的名称,而不用传一大堆sql语句 ...
- 【RabbitMQ】基础三:发布与订阅模式(Publish/Subscribe)
[RabbitMQ]基础三:发布与订阅模式(Publish/Subscribe) 1. 订阅模式 2. 发布与订阅模式说明 3. 代码示例 3.1 生产者 3.2 消费者 3.3 测试 4. 总结 1 ...
- SQL存储过程总结 - sql server 2012数据库基础-存储过程及应用-实验报告
这是我大三第一学期<数据库基础>这门课的实验报告,总共15个实验,我挑了几个比较重要的放在博客上,方便查看和复习,尤其是最近SSM后端开发,希望对大家,以及将来的我有所帮助! 本文是存储过 ...
- R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(主题模式配置、色彩设置)实战
R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(主题模式配置.色彩设置)实战 目录 R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(分组箱体框颜 ...
- oracle 定时任务 job 调用存储过程有回到输出参数(含out参数)
oracle 定时任务 job 调用存储过程有返回输出参数(含out参数) 因前台调用一个含有OUT参数的存储过程,同时在JOB里也想调用同一个存储过程,不想将OUT参数去掉重新建一个存储过程再被JO ...
- [C/C++基础知识] main函数的参数argc和argv
该篇文章主要是关于C++\C语言最基础的main函数的参数知识,是学习C++或C语言都必备的知识点.不知道你是否知道该知识?希望对大家有所帮助. 一.main()函数参数 通常我们在写主函数时都是vo ...
最新文章
- 蚂蚁金服×西安银行 | 西安银行手机银行App的智能升级之路
- ubuntu8.10家庭使用(一)
- PySide2 基础入门-创建实例窗口(详细解释)
- tuple 方法总结整理
- Python Django 图片上传及显示代码示例
- 直播 | ICML 2021论文解读:满足隐私保护要求的去中心化无监督域迁移范式
- 遥感图像增强方法应用
- 2017年终奖发放,程序员人均11776元排名第一!
- JdbcTemplate使用小结
- mysql kill 超过1分钟的语句
- SSM+Jedis初体验
- python论文参考文献5篇_毕业论文参考文献
- matlab函数结果,matlab多返回值函数怎么设定
- 在线广告系统的架构变迁
- EBS中的销售员SQL
- python代码补全_python命令自动补全
- css制作三角形、带三角文本框、价格三角框
- 利用scrapy爬取新浪体育新闻的小例子
- sqlplus中怎么导入java类,[导入]SQLPLUS 操作大全
- 最唯美的10首中国情诗