【基础】存储过程IN、OUT、INOUT参数模式

【基础】存储过程IN、OUT、INOUT参数模式mysql 三种参数模式 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分号定界符

调用:

【基础】存储过程IN、OUT、INOUT参数模式

三 OUT 模式 : 参数输出模式

DELIMITER $$ CREATE PROCEDURE user_main_pro2(OUT v_count INT) BEGIN SELECT COUNT(*) INTO v_count FROM t_user_main; END $$ DELIMITER

调用:

【基础】存储过程IN、OUT、INOUT参数模式

定义存储过程 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 THEN SET v_count = 100; ELSE SET v_count = 500; END IF; # 返回赋值 SET v_id = v_count; END $$ DELIMITER;

调用:

【基础】存储过程IN、OUT、INOUT参数模式

新建存储过程 user_main_pro3,参数模式为 INOUT 模式,该模式参数既作为输入,也可作为输出。

定义一个变量 set @v_id=1,通过call user_main_pro3(@v_id)调用存储过程,

将参数 @v_id 输入后满足判断的 else,存储过程处理结果为 500,同时也通过

变量 @v_id 接受存储过程处理的结果。

所以,INOUT 模式参数 v_id 既可以作为输入,也可以作为输出。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/231190.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mysql handlersocket_HandlerSocket介绍[通俗易懂]

    mysql handlersocket_HandlerSocket介绍[通俗易懂]HandlerSocket的原理HandlerSocket的应用场景:MySQL自身的局限性,很多站点都采用了MySQL+Memcached的经典架构,甚至一些网站放弃MySQL而采用NoSQL产品,比如Redis/MongoDB等。不可否认,在做一些简单查询(尤其是PK查询)的时候,很多NoSQL产品比MySQL要快很多,而且前台网站上的80%以上查询都是简洁的查询业务。MySQL通过Handl…

    2022年8月24日
    6
  • 数据分层之DWD

    数据分层之DWD1DWD是什么?明细粒度事实层以业务过程作为建模驱动,基于每个具体的业务过程特点,构建最细粒度的明细层事实表。可以结合企业的数据使用特点,将明细事实表的某些重要维度属性字段做适当冗余,即宽表化处理.明细粒度事实层(DWD)通常分为三种:事务事实表周期快照事实表累积快照事实表。2DWD中的信息有什么?事实表中一条记录所表达的业务细节程度被称为粒度。通常粒度可以通过两种方式来表述:一种是维度属性组合所表示的细节程度,一种是所表示的具体业务含义。作为度量业务过程的事实,通常为整型或浮点型的十

    2022年6月26日
    38
  • 二叉树前序遍历 迭代_二叉树的前序中序后序遍历算法

    二叉树前序遍历 迭代_二叉树的前序中序后序遍历算法二叉树的前序遍历对于一颗二叉树,当遍历它的时候使用递归总是轻而易举的。这是二叉树前序遍历-使用递归publicvoidpreorderTraversal(TreeNoderoot){if(root==null)return;System.out.print(root.data+””);preorde…

    2025年10月20日
    5
  • 免费搭建属于自己的域名个性邮箱

    免费搭建属于自己的域名个性邮箱

    2022年2月18日
    61
  • calendar java_java中Calendar类的使用讲解

    calendar java_java中Calendar类的使用讲解Calendar类是我们在工作中经常用到时间相关的一个工具类;比如月初、月末、年初、年末、指定月份所在季度的季末等操作,对它有更深入的了解,在工作中会起到事半功倍的效果,下面就来了解一下吧!!!**一.Calendar类概述Calendar是日历类,该类将所有可能用到的时间信息封装为静态成员变量,方便获取。常用方法如下如下://根据日历的规则,为给定的日历字段添加或减去指定的时间量。abstrac…

    2025年11月20日
    3
  • idea打包教程[通俗易懂]

    idea打包教程[通俗易懂]然后点apply/ok

    2022年10月3日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号