前言

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参数模式相关推荐

  1. MySQL 存储过程传参之in, out, inout 参数用法

    存储过程传参:存储过程的括号里,可以声明参数. 语法是 create procedure p([in/out/inout] 参数名  参数类型 ..) in :给参数传入值,定义的参数就得到了值 ou ...

  2. mysql 调用存储过程 inout_MySQL存储过程in、out和inout参数示例和总结

    存储过程 1.创建存储过程并查看全局变量 mysql> create database yy; Query OK, 1 row affected (0.00 sec) mysql> use ...

  3. MySQL 基础 ———— 存储过程与函数

    一.存储过程介绍 存储过程是一组预先编译好的SQL语句的集合,可理解成批处理语句.它的优点主要有以下几点: 1.提高代码的重用性: 2.简化操作: 3.减少了编译次数并且减少了和数据库服务器的连接次数 ...

  4. mysql out_mysql存储过程 in out inout

    存储过程的好处 存储过程是一组预编译好的sql语句,用来执行某个特定的功能.这样可以省去sql解析.编译.优化的过程,提高了执行效率,同时,在调用的时候只传一个存储过程的名称,而不用传一大堆sql语句 ...

  5. 【RabbitMQ】基础三:发布与订阅模式(Publish/Subscribe)

    [RabbitMQ]基础三:发布与订阅模式(Publish/Subscribe) 1. 订阅模式 2. 发布与订阅模式说明 3. 代码示例 3.1 生产者 3.2 消费者 3.3 测试 4. 总结 1 ...

  6. SQL存储过程总结 - sql server 2012数据库基础-存储过程及应用-实验报告

    这是我大三第一学期<数据库基础>这门课的实验报告,总共15个实验,我挑了几个比较重要的放在博客上,方便查看和复习,尤其是最近SSM后端开发,希望对大家,以及将来的我有所帮助! 本文是存储过 ...

  7. R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(主题模式配置、色彩设置)实战

    R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(主题模式配置.色彩设置)实战 目录 R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(分组箱体框颜 ...

  8. oracle 定时任务 job 调用存储过程有回到输出参数(含out参数)

    oracle 定时任务 job 调用存储过程有返回输出参数(含out参数) 因前台调用一个含有OUT参数的存储过程,同时在JOB里也想调用同一个存储过程,不想将OUT参数去掉重新建一个存储过程再被JO ...

  9. [C/C++基础知识] main函数的参数argc和argv

    该篇文章主要是关于C++\C语言最基础的main函数的参数知识,是学习C++或C语言都必备的知识点.不知道你是否知道该知识?希望对大家有所帮助. 一.main()函数参数 通常我们在写主函数时都是vo ...

最新文章

  1. 蚂蚁金服×西安银行 | 西安银行手机银行App的智能升级之路
  2. ubuntu8.10家庭使用(一)
  3. PySide2 基础入门-创建实例窗口(详细解释)
  4. tuple 方法总结整理
  5. Python Django 图片上传及显示代码示例
  6. 直播 | ICML 2021论文解读:满足隐私保护要求的去中心化无监督域迁移范式
  7. 遥感图像增强方法应用
  8. 2017年终奖发放,程序员人均11776元排名第一!
  9. JdbcTemplate使用小结
  10. mysql kill 超过1分钟的语句
  11. SSM+Jedis初体验
  12. python论文参考文献5篇_毕业论文参考文献
  13. matlab函数结果,matlab多返回值函数怎么设定
  14. 在线广告系统的架构变迁
  15. EBS中的销售员SQL
  16. python代码补全_python命令自动补全
  17. css制作三角形、带三角文本框、价格三角框
  18. 利用scrapy爬取新浪体育新闻的小例子
  19. sqlplus中怎么导入java类,[导入]SQLPLUS 操作大全
  20. 最唯美的10首中国情诗

热门文章

  1. 【Matlab】RGB, HSV 颜色空间绘制
  2. collection集合和源码
  3. replicate vs duplicate
  4. react如何获取option的下标和值_select选中获取索引三种写法
  5. 替代3DJ6和3DG6的场效应管和三极管
  6. 微型计算机BX和AX区别,微机原理及接口技术-习题答案
  7. 冷启动与热启动的定义
  8. ROS-talker,listener
  9. 使用 spring 集成 dbcp 数据库连接池到 Wowza 插件
  10. 干货!MetaCorrection:解决无监督域适应的domain gap问题