MySQL中的存储过程详解(下篇)

使用语言 MySQL

使用工具 Navicat Premium 16

代码能力快速提升小方法,看完代码自己敲一遍,十分有用

  • 拖动表名到查询文件中就可以直接把名字拉进来
  • 中括号,就代表可写可不写 

目录

1. 查看存储过程 

1.1 查看存储过程的状态 

1.1.1 基础语法

1.1.2 字段模糊查询连接方法

1.2 查看存储过程的创建代码 

1.2.1 基础语法

1.2.2 示例 

2. 修改存储过程 

2.1 基本语法

2.2 示例 

3. 删除存储过程 

3.1 基本语法

4. 存储过程中的控制语句 

4.1 条件语句

4.1.1 if-elseif-else条件语句 

4.1.2 if-elseif-else条件语句示例

4.1.3 case条件语句 

4.1.4 以上if示例使用case写法

4.1.5 case语句示例 

4.2 循环语句 

4.2.1 while循环语句 

4.2.2 while循环示例 


 

1. 查看存储过程 

MySQL提供了查询存储过程的方式。

1.1 查看存储过程的状态 

1.1.1 基础语法

类似查看数据库中的数据表信息,MySQL用户也可以查看数据库中已创建的存储过程。语法格式如下:

  • show procedure status;

查看hospital数据库中创建的存储过程代码如下:

  • show procedure status where DB='hospilal';

除了通过指定数据库名查询存储过程,还可以通过like关键字匹配存储过程名称。例如:

  • show procedure status like ;%patient%;

1.1.2 字段模糊查询连接方法

  • 字段名 like concat('%',变量名/字段名,'%')

示例 

运行结果

 

1.2 查看存储过程的创建代码 

1.2.1 基础语法

除了查询存储过程的状态,还可以查询存储过程的创建代码。语法格式如下: 

  • show create procedure 存储过程名; 

意思就是展示创建的存储过程 

1.2.2 示例 

 

运行结果 

 

2. 修改存储过程 

2.1 基本语法

在MySQL中,使用alter procedure语句可以修改创建存储过程时定义的特性。语法格式如下:

  • alter procedure 存储过程名 [特性.....];

2.2 示例 

修改存储过程pro_show的SQL security特性为invoker。关键代码如下。

  • alter procedure pro_show SQL security invoker; 

3. 删除存储过程 

3.1 基本语法

类似删除数据库中的数据表,MySQL用户可以使用drop procedure语句删除已创建的存储过程。语法如下:

  • drop procedure [if exists] 存储过程名; 

用法与删除数据表相同。 

注:在创建存储过程前,可以使用if exists语句检查存储过程是否存在。如果不存在,再进行创建。 

先drop再create;

4. 存储过程中的控制语句 

在实际应用中,要解决复杂的问题,往往涉及复杂的流程控制。类似于Java语言中的流程控制语句,MySQL提供的控制语句包括条件语句、循环语句和迭代语句。

4.1 条件语句

MySQL提供两种条件语句,分别时if-elseif-else条件语句和case条件语句。 

4.1.1 if-elseif-else条件语句 

  • if-elseif-else条件语句时最常用的一种条件语句,语法如下:

if 条件 then 语句列表
[elseif条件then语句列表]
[else语句列表]
end if; 

4.1.2 if-elseif-else条件语句示例

运行结果 

 

  • 条件一般从大写到小 

4.1.3 case条件语句 

MySQL中的case条件语句有两种写法。 

  • 两种写法 

case
 when 条件 then 语句列表
 [when 条件 then 语句列表]
 [else 语句列表]
end case;

  • 在case语句中,若条件为真,则相应的SQL语句列表将被执行。若没有条件匹配,则在else子句里的语句列表被执行。另外,case语句值返回一个符合条件的值,剩下的部分将会被自动忽略。

case 列名
 when 条件 then 语句列表
 [when 条件 then 语句列表]
 [else 语句列表]
end case; 

  • case语句的两种写法可以实现相同的功能。在某种情况下(如做等值判断),使用第二种写法更加简洁,但是因为case后面有列名,功能上有一些限制。因此,使用时要根据需求进行选择。 

4.1.4 以上if示例使用case写法

  • 注意:在case语句中,else也是可以写的 

4.1.5 case语句示例 

  • 在 MySQL 存储过程中,你可以使用 CASE 表达式来根据条件执行不同的逻辑。如果你想在存储过程中使用 CASE 表达式,并且希望将列名作为条件,你可以像在普通 SQL 查询中一样引用列名。以下是一个示例:
  • 假设我们有一个名为 orders 的表,其中包含订单信息,包括订单状态列 status 和订单金额列 amount。我们想要创建一个存储过程,根据传入的订单状态参数返回相应状态的订单总金额。 
DELIMITER //

CREATE PROCEDURE getOrderTotalByStatus(IN orderStatus VARCHAR(50))
BEGIN
    DECLARE totalAmount DECIMAL(10, 2);
    
    SET totalAmount = (
        SELECT 
            SUM(CASE WHEN status = orderStatus THEN amount ELSE 0 END)
        FROM orders
    );
    
    SELECT totalAmount;
END //

DELIMITER ;
  •  在这个存储过程中,我们首先定义了一个变量 totalAmount 来存储订单总金额。然后,我们使用一个 SELECT 语句来计算满足指定订单状态的订单总金额,并将结果存储到 totalAmount 变量中。在 CASE 表达式中,我们引用了列名 status 作为条件,并将其与传入的参数 orderStatus 进行比较。最后,我们通过另一个 SELECT 语句返回计算得到的订单总金额。
  • 这就是一个使用 CASE 表达式带列名的示例,用于 MySQL 存储过程中。

4.2 循环语句 

MySQL语句提供多种循环语句,包括while循环语句、loop循环语句和repeat循环语句。 

这里主讲while循环;

4.2.1 while循环语句 

  • while循环语句是最普遍使用的循环语句,它首先判断条件是否成立,若成立,则执行循环体。语法格式如下:

[label:] while 条件 do
  语句列表
end while [label] 

4.2.2 while循环示例 

运行结果

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/549379.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据结构学习之路--深入探索栈的核心要点(附C源码)

哈喽~大家!今天我们来学习栈的特别节目,精彩马上开始~ 目录 前言 一、栈 1 栈的概念 2 栈的结构 3 栈的实现 3.1 栈的定义 3.2 栈的初始化 3.3 入栈 3.4 出栈 3.5 取栈顶元素 3.6 判断栈是否为空 3.7 栈的大小 3.8 栈的销毁 二、源代…

InnoDB架构:磁盘篇

InnoDB架构:磁盘篇 InnoDB是MySQL数据库中默认的存储引擎,它为数据库提供了事务安全型(ACID兼容)、行级锁定和外键支持等功能。InnoDB的架构设计优化了对于读取密集和写入密集型应用的性能表现,是一个高度优化的存储系…

ctf.show_web13

上传一句话木马 1.php文件&#xff0c;显示 再改后缀为.jpg&#xff0c;显示错误文件大小 用dirsearch扫一下 备份文件.bak 下载文件源码 <?php header("content-type:text/html;charsetutf-8");$filename $_FILES[file][name];$temp_name $_FILES[file][tm…

C++项目 -- 负载均衡OJ(一)comm

C项目 – 负载均衡OJ&#xff08;一&#xff09;comm 文章目录 C项目 -- 负载均衡OJ&#xff08;一&#xff09;comm一、项目宏观结构1.项目功能2.项目结构 二、comm公共模块1.util.hpp2.log.hpp 一、项目宏观结构 1.项目功能 本项目的功能为一个在线的OJ&#xff0c;实现类似…

普通人做抖音小店真的能赚钱吗?可以,但更取决于个人

大家好&#xff0c;我是电商花花。 现在做抖音小店的基本上都是一些新商家&#xff0c;对于我们众多零基础的朋友来说&#xff0c;是期待也是一份挑战。 抖音小店作为一个充满机会的新兴平台&#xff0c;许多人都欣喜的投入其中&#xff0c;期望能够借此来改变自己的命运&…

【教程】ubuntu20.04 下配置 Charm-crypto 0.5 实验环境

目录 前言先决条件基本依赖安装准备好 gcc&#xff0c;make 和 perl准备好 m4&#xff0c;flex&#xff0c;bison 和 libssl-dev安装 Python3.x&#xff0c;pip3 和 pyparsing 安装 OpenSSL安装 GMP5.x安装 PBC安装 Charm-crypto5.0安装开发环境检验 Charm-crypto5.0 安装成功参…

跨国公司网络优化新选择:SD-WAN解决方案

随着全球化的加速推进&#xff0c;跨国企业纷纷实施跨国战略&#xff0c;然而&#xff0c;在各地建立分支机构、数据中心的过程中&#xff0c;往往面临网络性能差异大、数据传输效率低下等问题。在这样的背景下&#xff0c;SD-WAN成为跨国公司网络解决方案的优选。 跨国企业对于…

IO、存储、硬盘、文件系统相关常识

目录 IO 文件系统 文件在硬盘上的存储 IO IO&#xff0c;就是Input和Output&#xff0c;即输入和输出操作。我们的电脑可以通过网络下载文件&#xff0c;也可以通过网络上传文件。通过网络下载文件就是输入操作&#xff0c;上传文件就是输出。如何区分输入和输出呢&#xf…

imgcat 工具

如果经常在远程服务器或嵌入式设备中操作图片&#xff0c;要查看图片效果&#xff0c;就要先把图片dump到本地&#xff0c;比较麻烦。可以使用这个工具&#xff0c;直接在终端上显示。类似于这种效果。 imgcat 是一个终端工具&#xff0c;使用 iTerm2 内置的特性&#xff0c;允…

精益思维驱动人工智能革新:理论到实践的跃迁之旅

随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;已成为引领未来的关键力量。在这个变革的时代&#xff0c;如何将精益思维与人工智能相结合&#xff0c;推动AI从理论走向实践&#xff0c;成为行业内外关注的焦点。本文&#xff0c;天行健精益生产顾问将分享…

陇剑杯 流量分析 webshell CTF writeup

陇剑杯 流量分析 链接&#xff1a;https://pan.baidu.com/s/1KSSXOVNPC5hu_Mf60uKM2A?pwdhaek 提取码&#xff1a;haek目录结构 LearnCTF ├───LogAnalize │ ├───linux简单日志分析 │ │ linux-log_2.zip │ │ │ ├───misc日志分析 │ │ …

阿里云优惠券种类介绍及领取教程详解

随着互联网技术的快速发展&#xff0c;越来越多的企业和个人开始将业务和数据迁移到云端。阿里云作为国内领先的云服务提供商&#xff0c;为广大用户提供了丰富多样的云产品和服务。为了回馈用户&#xff0c;阿里云经常推出各种优惠活动&#xff0c;其中优惠券就是其中一种常见…

记录一下我hive连不上DataGrip的问题

用户名和密码都没问题&#xff0c;但报如下这个错误 原因&#xff1a;是因为我在linux上没启hiveserver2服务 解决&#xff1a; [atguiguhadoop102 hadoop]$ hiveserver2 which: no hbase in (/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/module/jdk1.8…

第19天:信息打点-小程序应用解包反编译动态调试抓包静态分析源码架构

第十九天 本课意义 1.如何获取到目标小程序信息 2.如何从小程序中提取资产信息 一、Web&备案信息&单位名称中发现小程序 1.国内主流小程序平台 微信 百度 支付宝 抖音头条 2.小程序结构 1.主体结构 小程序包含一个描述整体程序的app和多个描述各自页面的page …

RAG算法优化+新增代码仓库支持,CodeGeeX的@repo功能效果提升

CodeGeeX在升级到第三代模型时&#xff0c;就引入了RAG检索增强生成的能力。即模型会根据检索到的相关背景知识生成回答&#xff0c;大幅减轻生成内容的幻觉性。在CodeGeeX插件中&#xff0c;是通过侧边栏对话框中输入“repo”触发 RAG 技术。用户可以对开源代码仓库进行提问&a…

HG泄露(ctfhub)

工具准备&#xff1a;dirsearch、dvcs-ripper 网络安全之渗透测试全套工具篇&#xff08;内含安装以及使用方法&#xff09;_dvcs-ripper-CSDN博客 dvcs-ripper&#xff1a;一款perl的版本控制软件信息泄露利用工具&#xff0c;支持bzr、cvs、git、hg、svn... tree //树状…

突破编程_前端_SVG(使用 svg-pan-zoom 库进行平移与缩放)

1 svg-pan-zoom 概述 svg-pan-zoom 是一个轻量级、高性能且易于使用的 JavaScript 库&#xff0c;专为增强 SVG 图像的浏览体验而设计。它提供了平移和缩放功能&#xff0c;使用户能够无缝探索大型或复杂的 SVG 图形。这个库允许用户对SVG图像进行交互操作&#xff0c;包括缩放…

App怎么创建百度百科词条

创建一个App的百度百科词条可以帮助提高App的知名度和权威性&#xff0c;以下是详细的创建步骤和注意事项&#xff1a; 创建步骤 注册百度账号&#xff1a;首先&#xff0c;你需要有一个百度账号&#xff0c;如果没有&#xff0c;你需要按照步骤申请一个&#xff0c;这一步骤是…

【ENSP】华为三层交换机配置AAA认证,开启telnet服务

配置步骤 1.给交换机配置ip地址&#xff0c;以便登陆 2.配置AAA&#xff0c;用户名&#xff0c;密码&#xff0c;服务类型&#xff0c;用户权限 3.配置接入设备的数量 4.开启telnet服务 LSW2交换机配置 u t m #关闭提示 sys …
最新文章