mysql之流程控制
目录
- 分支结构
- 循环结构
分支结构:
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之流程控制的更多相关文章
- MySQL数据库----流程控制
流程控制 1.条件语句 举例一 delimiter // CREATE PROCEDURE proc_if () BEGIN declare i int default 0; if i = 1 THE ...
- MySQL 存储过程 -流程控制的使用
#五.流程控制的使用 #1.IF 使用 create PROCEDURE iftest1() BEGIN DECLARE a int DEFAULT 10; -- IF (a>1 &&a ...
- MySql存储过程及MySql常用流程控制语法
/* 该代码是创建了一个名叫"p4"的存储过程并设置了s1,s2,s3两个int型一个varchar型参数,还可以是其他数据类型,内部创建了x1,x2两个变量 DELIMITER是 ...
- 【mysql的编程专题①】流程控制与其他语法
流程控制与内置函数,一般用在select的field字段上,或者用在函数,存储过程,触发器中; 如果用在select上就会随着query出来的row来隐式迭代; 注释与语句结束符 语句结束符 默认有两 ...
- MySQL自定义函数用法详解-复合结构自定义变量/流程控制
自定义函数 (user-defined function UDF)就是用一个象ABS() 或 CONCAT()这样的固有(内建)函数一样作用的新函数去扩展MySQL. 所以UDF是对MySQL功能的一 ...
- mysql 视图 触发器 事物 存储过程 函数 流程控制
1.视图 *** 视图是有一条sql语句的查询结果构成的虚拟表 其不是物理存在的 使用方式与普通表相同 视图的作用1.简化sql语句的编写 2.限制可以查看的数据 可以使用权限来完成 权限某一个库 的 ...
- 知识点:Mysql 基本用法之流程控制
流程控制 一. 条件语句 if 语句实例: delimiter // CREATE PROCEDURE proc_if () BEGIN declare i int default 0; if i = ...
- MySQL之视图、触发器、事务、存储、函数、流程控制
一.视图 视图就是一个虚拟表,我们把复杂的sql语句后看到的虚拟表封装起来,给他取个名字,当我们下次使用的时候,就不用再去写复杂的sql语句,直接调用封装后的视图名字,就可以得到我们想要的表,然后就可 ...
- MySQL之视图、触发器、事务、存储过程、函数 流程控制
MySQL之视图.触发器.事务.存储过程.函数 阅读目录 一 视图 二 触发器 三 事务 四 存储过程 五 函数 六 流程控制 MySQL这个软件想将数据处理的所有事情,能够在mysql这个层面上全部 ...
随机推荐
- Handlebars.js 中文文档
Home » 前端 » Handlebars.js 中文文档 Handlebars.js 中文文档 Posted in 前端 By KeenWon On 2014年4月3日 Views: ...
- SGU 321 知道了双端队列,
思路: 贪心. 每次删除最上面的边.. #include<utility> #include<iostream> #include<vector> #include ...
- 反混淆、反编译unity3d动画插件DFTweenLite得到源代码
出处:http://blog.csdn.net/u010019717 author:孙广东 时间:2015.3.17 23:00 我为什么要得到这个源代码.由于有洁癖! 对于Itween ...
- mysql工作原理(网络搜索整理的)
原文网址:Mysql 工作原理 原文网址:MySQL运行原理与基础架构 mysql基本用法原文网址:MySQL(一):基本原理 SQL 语句执行过程 数据库通常不会被直接使用,而是由其他编程语言通过S ...
- 20170111 ABAP技术小结(全半角转换)
DATA: it_po LIKE it_alv OCCURS 0 WITH HEADER LINE.************************************************** ...
- 《Visual C++ 2010入门教程》系列四:VC2010中初学者常见错误、警告和问题
<Visual C++ 2010入门教程>系列四:VC2010中初学者常见错误.警告和问题 这一章将帮助大家解释一些常见的错误.警告和问题,帮助大家去理解和解决一些常见问题,并了解它的 ...
- VS 一些用法设置
/************************************************************************ * VS 一些用法设置 * 说明: * 最近要用到C ...
- javascript base64 编码,兼容ie6789
用Javascript进行base64编码,在高版本的IE浏览器(IE9以上版本),和firefox,chrome浏览器里是非常方便的.这些浏览器的window对象中内置了base64的编码和解码方法 ...
- css3 vw -----解决页面滚动出现跳动的bug
100vw相对于浏览器的window.innerWidth,是浏览器的内部宽度,注意,滚动条宽度也计算在内!而100%是可用宽度,是不含滚动条的宽度. demo: h1{font-size:8vw;} ...
- Java Socket实战之一:单线程通信
转自:http://developer.51cto.com/art/201202/317543.htm 现在做Java直接使用Socket的情况是越来越少,因为有很多的选择可选,比如说可以用sprin ...