MySQL中的存储过程、变量、条件语句、循环语句

2023-10-27

存储过程

1、什么是存储过程

​ 是数据库一个重要的功能,是为了以后使用保存一条或者多条MySQL语句的集合。

存储过程思想上就是数据库sql语言层面代码的封装与重用。

2、为什么使用存储过程

​ a. 把处理封装在容易使用的单元中,简化操作

​ b. 防止错误 保证了数据一致性

​ c. 简化对变动的管理(修改对应的表名、列名等 修改对应存储过程的代码,对于使用的人不需要知道变化)

​ d. 提高性能

​ e. 灵活

总结:简单 、安全、高性能

MySQL在5.0开始支持存储过程

存储过程的格式

-- 存储过程的语法结构
-- CREATE PROCEDURE 过程名称([过程的参数[....]]) [特性...] 过程体
-- DELIMTER   // //  DELIMTER; 分隔符
CREATE PROCEDURE showStudent(OUT stucount int)
BEGIN
	SELECT COUNT(1) INTO stucount FROM student;
END

SET @stucount = 1;# 声明变量 需要以@开头
CALL showStudent(@stucount);# 执行存储过程
SELECT @stucount;# 查询结果

3、注意:

​ a、DELIMTER // 和// DELIMTER,这两句是分割符的意思,因为mysql默认以;为分割符,如我们没有声明分隔符(DELIMTER )那么编译器会把存储过程当做SQL语句来进行处理,则存储过程就报错了,所以要实现使用DELIMTER 关键字申明 当前字段分隔符,这样MySQL才会将 ‘;’ 当做存储过程中的代码。

​ b、存储过程根据需要可能会有 输入 输出,输入输出参数,这里就有一个输出参数stucount 类型是int类型的如果有多个参数需要 ‘,’隔开

​ c、过程体的开始与结束需要BEGIN和END

参数:

mysql存储过程共有三种参数的类型 - - - IN、OUT、INOUT

使用语法:

CREATE PROCEDURE 参数名称((IN、OUT、INOUT) 参数名称 数据类型)

IN :输入参数-表示改参数的值 必须在调用存储过程时指定,在存储过程中改参数的值不能被返回

-- IN参数的使用
CREATE PROCEDURE demo_in_par(in p_in INT)
BEGIN
	SELECT p_in;
	SET p_in=2;
	SELECT p_in;
END;# 存储过程的创建

-- 执行 查看结果
SET @p_in=1;
CALL demo_in_par(@p_in)

SELECT @p_in # 查询变量的值 结果没有发生改变  

OUT:输出参数-该值可在存储过程中内部被改变 ,并可以返回

-- OUT参数的使用
CREATE PROCEDURE demo_out_par(OUT p_out INT)
BEGIN
	SELECT p_out;
	SET p_out=2;
	SELECT p_out;
END;# 存储过程的创建

-- 执行 查看结果
SET @p_out=1;
CALL demo_out_par(@p_out);

SELECT @p_out; # 查询变量的值 结果发生改变 

INOUT:输入输出参数-调用时指定,并且可以被改变和返回

-- INOUT参数的使用
CREATE PROCEDURE demo_inout_par(INOUT p_inout INT)
BEGIN
	SELECT p_inout;
	SET p_inout=2;
	SELECT p_inout;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL中的存储过程、变量、条件语句、循环语句 的相关文章

随机推荐

  • Cannot find template location: classpath:/templates/(please add some templates or check your Thymel)

    一 异常信息 Cannot find template location classpath templates please add some templates or check your Thymeleaf configuration
  • C++ shared_ptr和std::move

    以shared ptr为参数调用std move并用等于号时 会调用共享指针的移动构造函数 从而使原共享指针失效 include
  • 目标检测——Detectron2的学习笔记

    1 Detectron2的官方地址 https github com facebookresearch detectron2
  • ssh root账号远程连接出现Permission denied错误

    ssh root账号远程连接出现Permission denied错误 网上搜这个问题出来的问题大多都是修改sshd config中的PermitRootLogin yes 但在我修改之后依然无法登陆 搜到了另一个不知道原因的方法 把你要远
  • 李彦宏被《时代》周刊评为全球AI领袖

    北京时间9月7日晚 时代 周刊发布了首届全球百大AI人物 百度创始人 董事长兼首席执行官李彦宏被评为全球AI领袖 时代 肯定了李彦宏对AI的长期投入及百度在AI方面取得的多项成就 李彦宏是中国最杰出的未来主义者 长期投身于AI发展的浪潮 A
  • NLP领域的预训练模型(Transformer、BERT、GPT-2等)

    英文原文链接 https www analyticsvidhya com blog 2019 03 pretrained models get started nlp 1 介 绍 如今 自然语言处理 Natural Language Pro
  • 远景智能笔试

    第一次复习 操作系统只给一个进程一个时间片 不管你内部有多少个线程 我只给你一个 怎么分配是你的事情 第一次做 30 没有听过的题目 50 知道个大概的题目 20 有把握的题目 远景智能笔试题目链接 多线程和多进程 父子进程间遵循读时共享写
  • MySQL5.7与8.0数据库驱动配置区别

    MySQL5 7 spring datasource url jdbc mysql 192 168 31 200 3306 xxl job useUnicode true characterEncoding utf 8 useSSL fal
  • 深度学习Week9-YOLOv5-C3模块实现(Pytorch)

    本文为 365天深度学习训练营 中的学习记录博客 参考文章 Pytorch实战 第P8天 YOLOv5 C3模块实现 训练营内部成员可读 原作者 K同学啊 接辅导 项目定制 了解C3的结构 方便后续YOLOv5算法的学习 采用的数据集是天气
  • WPF疑难问题之Treeview中HierarchicalDataTemplate多级样式

    文章目录 一 问题场景 二 解决思路 一 问题场景 日常为 TreeView 自定义样式过程中 如果涉及到树形多级样式不同时 又该如何去做 例如树形显示文件夹和文件节点 TreeView 样式如下
  • React 组件生命周期

    组件的生命周期可分成三个状态 Mounting 已插入真实DOM Updating 正在被重新渲染 Unmounting 已移除真是DOM 生命周期的方法有 componentWill ount 在渲染前调用 在客户端也在服务端 compo
  • Win11 锁屏、开机画面使用window聚焦 壁纸失效解决方案

    1 设置 gt 个性化 gt 锁屏界面 gt 个性化锁屏界面 切换为图片 2 打开文件资源管理器 导航栏中点击查看 gt 显示 gt 勾选隐藏的项目 3 打开C 用户 你的用户 AppData Local Packages Microsof
  • Apache Mina学习笔记:JavaNIO框架Mina、Netty、Grizzly介绍与对比

    在开始代码编写 之前 最好先对现有的主流Java NIO框架作一个简单的了解 本文对Java NIO框架 Mina Netty Grizzly作简单的介绍与对比 我们先来看看三者之间的简介 Mina Mina Multipurpose In
  • cocos2d-x 自带动画

    cocos2d x 自带动画 声明 博文内容为自己整理笔记所用 有不对的地方还请大家指正 在cocos2dx 中的tests 项目里 已经带了 足够多的 动画事例 ActionsTest 我只是看了其中一些 自我感觉比较常用的动画 Acti
  • python的基础知识

    Python 的基础知识总结 一 元祖 Python的元组与列表类似 不同之处在于元组的元素不能修改 元组使用小括号 列表使用方括号 元组创建很简单 只需要在括号中添加元素 并使用逗号 隔开即可 例如 tup1 physics chemis
  • C++ fill()和fill_n()函数用法

    fill 和fill n函数是C Primer第十二章泛型算法部分内容 并把它们称为生成和变异算法 也就是说这两个函数只能对输入范围内已存在的元素进行操作 如果试图对空容器进行fill n操作 会导致严重的运行错误 所以在对元素进行写入操作
  • gpt 语言模型_了解gpt 3 openais最新语言模型

    gpt 语言模型 1 简介 1 Introduction If you have been following the recent developments in the NLP space then it would be almost
  • 男人副业做什么好?男生适合做啥副业?男士副业都有什么

    现在生活压力大 男人光靠自己的那点工资肯定是不行的 因为要买车要买房的 所以下班后找点副业或者兼职来做 成了很多上班族增加收入的一种方法 那么适合男人下班后的副业有哪些呢 1 游戏陪玩或者代打 比如现在蛮火的比心陪练APP就很不错 里面有英
  • 强化学习之Sarsa算法最简单的实现代码-(环境:“CliffWalking-v0“悬崖问题)

    1 算法简介 直接上伪代码 伪代码解释 第一行 设置动作空间A和状态空间S 以后你agent只能执行这A中有的动作 你环境的状态也就S中这么些 初始化Q表格 也就是表格的横坐标为动作 纵坐标为状态 每个格子里面的值表示 纵坐标对应的状态s下
  • MySQL中的存储过程、变量、条件语句、循环语句

    存储过程 1 什么是存储过程 是数据库一个重要的功能 是为了以后使用保存一条或者多条MySQL语句的集合 存储过程思想上就是数据库sql语言层面代码的封装与重用 2 为什么使用存储过程 a 把处理封装在容易使用的单元中 简化操作 b 防止错