文档章节

mysql PL(procedure language)流程控制语句

edison_kwok
 edison_kwok
发布于 05/21 23:14
字数 548
阅读 15
收藏 2

在MySQL中,常见的过程式SQL语句可以用在存储体中。其中包括IF语句、CASE语句、LOOP语句、WHILE语句、ITERATE语句和LEAVE语句,它们可以进行流程控制。

  • IF语句相当于Java中的if()...else if()...else...
  • CASE语句相当于Java中的switch()...case A:...break;default...
  • LOOP语句相当于Java中的while(true){...}
  • while语句相当于Java中的while(条件){...}
  • REPEAT语句相当于Java中的do{...}while(条件)
  • LEAVE语句相当于Java中的 break; 配合LOOP使用
  • 当REPEAT出现在LOOP、REPEAT、WHILE语句中的时,相当于Java中的continue;

1. IF语句

列一:

DELIMITER//
CREATE PROCEDURE example_if(IN X INT)
BEGIN
IF X=1 THEN 
SELECT 1;
ELSEIF X=2 THEN
SELECT 2;
ELSE
SELECT 3;
END IF;
END
//
  • 注意这里的selimiter//后面的 “//”和最后的 “//”

这样在当前数据库中究生成了过程控制函数example_if(x)

使用流程为

CALL example_if(6);

2. CASE语句

列二:

DELIMITER//
CREATE PROCEDURE example_case(IN X INT)
BEGIN
CASE X
WHEN 1 THEN SELECT 1;
WHEN 2 THEN SELECT 2;
ELSE SELECT 3;
END CASE;
END
//

这样在当前数据库中究生成了过程控制函数example_case(x)

使用:

CALL example_case(7);

3. WHILE语句

列三:

DELIMITER//
CREATE PROCEDURE example_while(OUT SUM INT)
BEGIN
DECLARE i INT DEFAULT 1;
DECLARE s INT DEFAULT 0;
WHILE i<=100 DO
SET s=s+i;
SET i=i+1;
END WHILE;
SET SUM=s;
END
//

这样在当前数据库中究生成了过程控制函数example_while(x)

调用:

CALL example_while(@a);
SELECT @s;

4. LOOP语句

列四:

DELIMITER//
CREATE PROCEDURE example_loop(OUT SUM INT)
BEGIN
DECLARE i INT DEFAULT 1;
DECLARE s INT DEFAULT 0;
loop_label:LOOP
SET s=s+i;
SET i=i+1;
IF i>100 THEN 
LEAVE loop_label;
END IF;
END LOOP;
SET SUM=s;
END
//

这里的leave label相当于java中的break;

调用:

CALL example_loop(@s);
SELECT @s;

5. REPEAT语句

列五:

DELIMITER//
CREATE PROCEDURE example_repeat(OUT SUM INT)
BEGIN
DECLARE i INT DEFAULT 1;
DECLARE s INT DEFAULT 0;
REPEAT
SET s=s+i;
SET i=i+1;
UNTIL i>100
END REPEAT;
SET SUM=s;
END
//

调用:

CALL example_repeat(@s);
SELECT @s;

© 著作权归作者所有

edison_kwok
粉丝 5
博文 112
码字总数 106574
作品 0
成都
程序员
私信 提问
Oracle PL/SQL入门之慨述

一、PL/SQL出现的目的   结构化查询语言(Structured Query Language,简称SQL)是用来访问关系型数据库一种通用语言,它属于第四代语言(4GL),其执行特点是非过程化,即不用指明执行的具体...

老朱教授
2017/10/10
0
0
2.0解析系列 | OceanBase 2.0——第一款支持“存储过程”的原生分布式数据库

OB君:本文是 “OceanBase 2.0 技术解析系列” 的第八篇文章,今天我们来说说2.0版本最标志性、最不得不提的新特性——存储过程。在为数不多的原生分布式数据库中,OceanBase 2.0是第一款支持...

荔子liqi
2018/11/05
0
0
PL/SQL流程控制语句

介绍PL/SQL的流程控制语句, 包括如下三类: l 控制语句: IF 语句l 循环语句: LOOP语句, EXIT语句l 顺序语句: GOTO语句, NULL语句1 条件语句IF THENPL/SQL 和 SQL语句 END IF; IF THENPL/SQL ...

whshurk
2017/12/20
0
0
mysql存储过程整理

1、存储过程的简介: 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用...

世界和平维护者
2016/10/16
26
0
ORACLE PL/SQL编程详解

SQL语言只是访问、操作数据库的语言,并不是一种具有流程控制的程序设计语言,而只有程序设计语言才能用于应用软件的开发。PL /SQL是一种高级数据库程序设计语言,该语言专门用于在各种环境下...

whshurk
2017/12/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

用Python帮你上马,哪里无码打哪里

目录 0 引言 1 环境 2 需求分析 3 代码实现 4 代码全景展示 5 后记 0 引言 所谓的像素图,就是对图像做一个颗粒化的效果,使其产生一种妙不可言的朦胧感。费话不多说,先来看一张效果图。 <c...

上海小胖
19分钟前
1
0
python from import与import as 的含义

from os import makedirs, unlink, sep #从os包中引入 makedirs.unlink,sep类 from os.path import dirname, exists, isdir, splitext 从 os包中的path类中引入 dirmame exists 等方法 impo......

dillonxiao
19分钟前
1
0
【转】URL最大长度问题

今天在测试Email Ticket的时候发现在进行Mark as Read/Unread操作时,请求是通过GET方式进行的。URL中列出了所有参与该操作的Ticket Id。于是,我想起GET请求是有最大长度限制的。遂输入超长...

ZhangLG
21分钟前
0
0
Segment段

CurrentHashMap和HashMap相比支持并发操作,整个CurrentHashMap是由一个个的Segment组成的,也是就是常说的分段锁 Segment继承了重入锁ReentrantLock来进行加锁, 可以简单的把CurrentHashMa...

周慕云
22分钟前
0
0
JS Date 自定义格式化方法

JS Date 自定义格式化方法 Date 时间对象 快速 自定义格式化 定义方法 // 自定义格式化方法Date.prototype.format = function(fmt) { var o = { "M+" : this.getMonth()+1, ......

DrChenXX
27分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部