首页 > 数据库 >MySQL储存过程控制语句

MySQL储存过程控制语句

时间:2024-11-08 13:17:05浏览次数:6  
标签:语句 储存 set END -- MySQL total DECLARE

一.条件语句

1.if-then-else 语句

DECLARE 局部变量       DEFAULT 默认值

语法:

IF 条件 THEN 语句列表;(如果第一条为true,就执行成功)

ELSEIF 条件  THEN 语句列表 ;(如果第一条为 false,就执行第二条)

ELSE 语句列表 ;  (如果上面都是false ,这句话就是否则,最终执行)

END IF;(这是结束语句)

代码如下:

1.第一种写法的是赋值写死的

-- 第一种写法的是赋值写死的
create PROCEDURE p3()  -- 第一步创建储存过程 p3
BEGIN   -- 第二步开始
    DECLARE score int default 58;  -- 这两步开始有介绍
    DECLARE result carchar(10);
  
    if score>=85 THEN              
       set result :='优秀';
    elseif score>=60 THEN
       set result :='及格';
    else
       set result :='不及格';
    END if;                       -- 这步是结束if
END;                              -- 这是结束

call p3();                        -- 运行

2.第二种赋值是参数 赋值参数有三种   in 代表输入   out 代表输出 

inout 它允许参数在存储过程调用时既作为输入也作为输出。这意味着,当您调用一个带有 INOUT 参数的存储过程时,您可以传递一个值给该参数(作为输入),并且存储过程可以修改这个值,然后这个修改后的值会在存储过程结束时返回给调用者(作为输出)

-- 第二种写法是参数
create PROCEDURE p4(in score int,out result varchar(10))
BEGIN 
    if score>=85 THEN
       set result :='优秀';
    elseif score>=60 THEN
       set result :='及格';
    else
       set result :='不及格';
    END if;
END;

call p4(18,@result);

2.CASE条件语句

1.语法:

(跟第一个差不多)

CASE

       WHEN 条件 THEN 语句列表

       WHEN 条件 THEN 语句列表

  END ACSE; 

代码如下:

CREATE PROCEDURE p6(in montha int)
BEGIN
      DECLARE result varchar(10);

      CASE 
          when montha >= 1 and montha <= 3 then 
              set result :='第一季度';
          when montha >= 4 and montha <= 6 then 
              set result := '第二季度';
          when montha >= 7 and montha <= 9 then 
              set result := '第三季度';
          when montha >= 10 and montha <= 12 then 
              set result := '第四季度';
          ELSE
               set result := '非法参数';
          end case;
          
          select concat('你输入的月份为:',monrha, '所属的季度为:',result);
          end;

          call p6(7);

二.循环语句

1.、while ···· end while

语法:

【label:】WHILE 条件 DO     -- [ ] 中是标号,方便关闭循环

语句列表

END WHILE [ label ]              --  关闭语句

代码如下:

CREATE PROCEDURE p7(IN initial_n INT, OUT total_sum INT)
BEGIN
    DECLARE current_n INT DEFAULT initial_n;
    DECLARE total INT DEFAULT 0;
 
    WHILE current_n > 0 DO
        SET total = total + current_n;
        SET current_n = current_n - 1;
    END WHILE;
 
    -- 将结果赋值给 OUT 参数
    SET total_sum = total;
END

CALL p7(10, @total_sum);
 
SELECT @total_sum;

这是一个循环中插入更改语句

-- 练习 循环中并且修改
CREATE PROCEDURE pp12(IN xh INT)
BEGIN
    DECLARE cur INT DEFAULT xh;
    
    WHILE cur <= 10005 DO
       
        UPDATE student_学员表
        SET address = '收到市'
        WHERE studentNo = cur; 
        SET cur = cur + 1;
    END WHILE;
END

2.LOOP循环语句

语法: 

       [label : ] LOOP    语句列表      -- [ ] 中是标号,方便关闭LOOP循环

       END LOOP [label]      --  结束LOOP循环

代码语句:

-- loop循环
CREATE PROCEDURE show88(out num int)
BEGIN
DECLARE i int default 0;
DECLARE s int DEFAULT 0;
x: LOOP 
  set i=i+1;
  if i>100 THEN
    LEAVE x; -- 结束loop循环
  end if;
  set s =i+s;
  end loop x;
  set num=s;
  END
  
  -- 运行
  call show88(@a); 
  -- 查询
  select @a

3.REPEAT循环语句

语句:

[ label : ] REPEAT  语句列表

UNTLT 条件

END REPEAT[ label ]

语句列表:

CREATE PROCEDURE p8(in n int)
BEGIN 
     DECLARE total int default 0;
     
     repeat 
           set total = total+n;
           set n = n-1;
     until n<=0
     end repeat;
     select total;
     end;
     
     call p8(10);

标签:语句,储存,set,END,--,MySQL,total,DECLARE
From: https://blog.csdn.net/A129837/article/details/143569579

相关文章

  • Kubernetes 中实现 MySQL 的读写分离
    Kubernetes中实现MySQL的读写分离在Kubernetes中实现MySQL的读写分离,可以通过主从复制架构来实现。在这种架构中,MySQL主节点(Master)负责处理所有写操作,而MySQL从节点(Slave)负责处理所有读操作。下面是一个详细的步骤指南:步骤1:创建Kubernetes集群确保你有一个运行良......
  • Ubuntu 24.04 二进制安装 MySQL 8.0.20
    相关资料操作系统:Ubuntu24.04数据库下载地址:https://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz部署#安装必要的依赖apt-yinstallnumactllibaio1t64-yln-sv/usr/lib/x86_64-linux-gnu/libtinfo.so.6.4/usr/lib/x86_64-li......
  • MySQL 正则表达式
    简介MySQL正则表达式概述MySQL正则表达式是一种强大的文本匹配工具,允许执行复杂的字符串搜索和处理。它使用REGEXP、RLIKE和REGEXP_LIKE()函数进行模式匹配,提供了灵活的方式来处理各种文本数据。正则表达式特别适用于模糊查询、模式匹配和文本分析场景,在数据库管理和应......
  • Mysql使用between and查询时间区间不包括右边界问题
    结论:Mysql数据库中的betweenand查询是包含右边界的,但如果字段是datetime类,数据格式则会被转换为:2018-10-0100:00:00,那么2018-10-01当天的数据就查询不到,所以就会出现不包含右边界的这种问题,而数据类型本身是date则不会出现上述问题。举例:在Mysql中有如下select语句:SELECT*FR......
  • linq to mysql 查询_LinQ to SQL 查询(转)
    LINQtoSQL是将对象关系映射到.NET框架中的一种实现。它可以将关系数据库映射为.NETFramework中的一些类。然后,开发人员就可以通过使用LINQtoSQL对数据库中的数据进行查询、修改、插入、删除等操作。LINQtoSQL类映射到SQLServer数据库中的表,这些类被称做“实体类”,实体......
  • MySQL索引详解
    MySQL索引详解索引介绍索引是一种用于快速查询和检索数据的数据结构,其本质可以看成是一种排序好的数据结构。索引的作用就相当于书的目录。打个比方:我们在查字典的时候,如果没有目录,那我们就只能一页一页的去找我们需要查的那个字,速度很慢。如果有目录了,我们只需要先去目录里......
  • MySql基本常用语句
    查询语句select*(要查找的内容)fromtable(表名)逻辑运算符--and与--or或--not取反--in包含select*(要查找的内容)fromtable(表名)where*and*select*(要查找的内容)fromtable(表名)where*or*select*(要查找的内容)fromtable(表名)where*in(......
  • php毕业设计流浪动物领养系统宠物领养网站PHP+MySQL+HTML计算机毕业设计PHP源码获取ph
    一、功能介绍基于php+mysql+html前台:网站首页宠物推荐最新宠物新闻咨询宠物分类宠物资讯评论登录/注册加入购物车、领养、个人中心后台:各种增删改查系统设置分类管理宠物管理领养管理评价管理新闻资讯用户管理二、效果展示三、代码展示CREATE......
  • python小练习——条件语句if
    if语句是Python中进行条件判断的基础工具,通过它可以轻松实现逻辑选择和流程控制。掌握好if语句的使用方法,对编写高效、灵活的程序至关重要。今天我们通过七个简单的题目来熟悉一下Python中的if条件语句。1、从键盘输入年龄,判断是否大于等于18岁,如果满足就输出“已成......
  • 安装MySQL:从新手到专家的第一步
    引言在现代应用开发中,MySQL是最广泛使用的关系型数据库之一。无论是用于小型网站的后台支持,还是大型企业级应用数据管理,掌握MySQL的安装与配置都是每个开发者的必备技能。然而,对于初学者来说,安装MySQL的过程有时会遇到各种坑。本文将带你逐步了解如何在不同操作系统上安装MySQ......