目录

  • 分支结构
  • 循环结构

分支结构:

  1.if condition then [statement] elseif condition then [statement] else [statement]  end if

   实例:求两个数中的最大值,如果两个数据相等,则返回0,不相等,则返回最大值  

delimiter //  -- 把默认的结束符;替换成//
create function test_if(a int,b int) returns int
BEGIN
DECLARE max int DEFAULT 0;
  -- 下面为分支结构
if a > b then
set max = a;
ELSEIF a<b then
set max = b;
ELSE
set max = 0;
end if;
return max;
end;
// -- 查询
select test_if(1,2)

  2.case when condition then [statement] when condition then [staement] else [statement] end case

   实例:求两个数中的最大值,如果两个数据相等,则返回0,不相等,则返回最大值

delimiter //  -- 把默认的结束符;替换成
create function test_when(a int ,b int) -- 函数结构
RETURNS int -- 返回值类型
BEGIN -- 开始标签
DECLARE max int default 0; -- 定义内部变量表示最大值,默认为0
-- 下面为分支结构
CASE
WHEN a > b then
SET max = a;
WHEN a < b then
SET max = b;
ELSE
SET max = 0;
END CASE;
RETURN max;
END;
//
-- 查询
select test_when(1,3)

循环结构:

  循环控制语句包括 while condtion do [statement]  、loop 、repeat  [statemnet] until condtion,其中while、loop满足条件开始循环,至少循环0次;而repeat满足条件退出循环,至少循环1次。

  1. while condtion do [statement]

  实例:求和

delimiter //  -- 把默认的结束符;替换成
-- 求数值a以内的数据之和
create function test_while(a int) -- 函数结构
returns int -- 返回值类型
begin
DECLARE sum int default 0; -- 和
DECLARE count int default 1;-- 循环次数变量
-- 下面是循环控制语句
la:while count <= a do
set sum = sum + count;
set count = count + 1;
end while la;
return sum;
end;
//

  2.loop

  实例:求和

delimiter //  -- 把默认的结束符;替换成
create function demo_loop(a int) returns int
BEGIN
DECLARE s int DEFAULT 0;
DECLARE i int DEFAULT 1;
la:loop
IF i>a then
LEAVE la;
end if;
set s = s+i;
set i=i+1;
end loop la;
return s;
end;
//
--查询
select demo_loop(1)

  3.repeat [statement] until condtion

  实例:求和

delimiter // -- 把默认的结束符;替换成//
create function demo_repeat(a int) returns int
begin
DECLARE s int default 0;
DECLARE i int DEFAULT 1;
la:REPEAT
set s = s+i;
set i=i+1;
UNTIL i>a
end REPEAT la;
return s;
end;
//
--查询
select demo_repeat(10)

mysql之流程控制的更多相关文章

  1. MySQL数据库----流程控制

    流程控制 1.条件语句 举例一 delimiter // CREATE PROCEDURE proc_if () BEGIN declare i int default 0; if i = 1 THE ...

  2. MySQL 存储过程 -流程控制的使用

    #五.流程控制的使用 #1.IF 使用 create PROCEDURE iftest1() BEGIN DECLARE a int DEFAULT 10; -- IF (a>1 &&a ...

  3. MySql存储过程及MySql常用流程控制语法

    /* 该代码是创建了一个名叫"p4"的存储过程并设置了s1,s2,s3两个int型一个varchar型参数,还可以是其他数据类型,内部创建了x1,x2两个变量 DELIMITER是 ...

  4. 【mysql的编程专题①】流程控制与其他语法

    流程控制与内置函数,一般用在select的field字段上,或者用在函数,存储过程,触发器中; 如果用在select上就会随着query出来的row来隐式迭代; 注释与语句结束符 语句结束符 默认有两 ...

  5. MySQL自定义函数用法详解-复合结构自定义变量/流程控制

    自定义函数 (user-defined function UDF)就是用一个象ABS() 或 CONCAT()这样的固有(内建)函数一样作用的新函数去扩展MySQL. 所以UDF是对MySQL功能的一 ...

  6. mysql 视图 触发器 事物 存储过程 函数 流程控制

    1.视图 *** 视图是有一条sql语句的查询结果构成的虚拟表 其不是物理存在的 使用方式与普通表相同 视图的作用1.简化sql语句的编写 2.限制可以查看的数据 可以使用权限来完成 权限某一个库 的 ...

  7. 知识点:Mysql 基本用法之流程控制

    流程控制 一. 条件语句 if 语句实例: delimiter // CREATE PROCEDURE proc_if () BEGIN declare i int default 0; if i = ...

  8. MySQL之视图、触发器、事务、存储、函数、流程控制

    一.视图 视图就是一个虚拟表,我们把复杂的sql语句后看到的虚拟表封装起来,给他取个名字,当我们下次使用的时候,就不用再去写复杂的sql语句,直接调用封装后的视图名字,就可以得到我们想要的表,然后就可 ...

  9. MySQL之视图、触发器、事务、存储过程、函数 流程控制

    MySQL之视图.触发器.事务.存储过程.函数 阅读目录 一 视图 二 触发器 三 事务 四 存储过程 五 函数 六 流程控制 MySQL这个软件想将数据处理的所有事情,能够在mysql这个层面上全部 ...

随机推荐

  1. Android实战简易教程-第四十枪(窃听风云之短信监听)

    近期在做监听验证码短信自己主动填入的功能,无意间想到了一个短信监听的办法. 免责声明:短信监听本身是一种违法行为,这里仅仅是技术描写叙述.请大家学习技术就可以.(哈哈) 本实例是基于bmob提供的后台 ...

  2. sizeof、strlen

    一.sizeof sizeof(...)是运算符,sizeof操作符的结果类型是size_t.它在头文件里typedef为unsigned int类型.是以字节为单位进行计数的.所以位域成员不 能用s ...

  3. 【扩展知识2】函数strlen()和非函数sizeof的使用

    [扩展知识2]函数strlen()和非函数sizeof的使用 [扩展文件夹] strlen函数 sizeof ( 1 )函数strlen() 原型:size_tstrlen ( const char ...

  4. JDBC连接数据库核心代码

    1.Oracle数据库   Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();   String url ...

  5. YTU 2574: 空白格式化

    2574: 空白格式化 时间限制: 1 Sec  内存限制: 128 MB 提交: 233  解决: 118 题目描述 恭喜你进入了蓝桥杯总决赛,本次大赛采用了全自动机器测评系统. 如果你的答案与标准 ...

  6. java计算时间差及比较时间大小(转)

    比如:现在是2004-03-26 13:31:40        过去是:2004-01-02 11:30:24 我现在要获得两个日期差,差的形式为:XX天XX小时XX分XX秒 方法一: DateFo ...

  7. BZOJ_2099_[Usaco2010 Dec]Letter 恐吓信_后缀自动机+贪心

    BZOJ_2099_[Usaco2010 Dec]Letter 恐吓信_后缀自动机 Description FJ刚刚和邻居发生了一场可怕的争吵,他咽不下这口气,决定佚名发给他的邻居 一封脏话连篇的信. ...

  8. 博弈论中的SG函数

    SG函数的定义: g(x) = mex ( sg(y) |y是x的后继结点 ) 其中mex(x)(x是一个自然是集合)函数是x关于自然数集合的补集中的最小值,比如x={0,1,2,4,6} 则mex( ...

  9. AutoIT:为文件夹下面的文件批量改名

    以前用Ruby脚本,对于中文,数字结合的文件名,修改名字也不是非常简单,需要修改字符集,可是用autoit来实现,也挺简单的,并且可以替换已有文件名中的汉字部分. $filepath = " ...

  10. linux更改用户名,域名(转载)

    转自:http://huangro.iteye.com/blog/365975 1. 我们在root权限下,使用命令: usermod -l new_user_name old_user_name 即 ...