频道栏目
首页 > 数据库 > MySQL > 正文
MysQL自学笔记9--自定义函数
2017-02-04 22:21:00         来源:qhxjtu的博客  
收藏   我要投稿

MysQL自学笔记9--自定义函数

使用MySQL 5.5以及MySQL自带命令客户端

自定义函数

在MySQL中,自定义函数(user-define function, UDF)作用就像是MySQL固有的函数一样去创建一个新的函数去扩展MySQL,也就是说UDF是MySQL功能的一个扩展

语法

创建
create function 函数名称(参数列表)
returns 返回值类型
函数体
create function fun_Name(parameter define ...)
returns {string/integer/real}
runtime_body

创建一个简单的无参数UDF:create function f1() returns varchar(20) return "Hello World!";

UDF有两个点要注意:一个是参数,另外一个是返回值 UDF可以没有参数,但是必须有而且只能有一个返回值,而且如果有用到begin ... and ...构造的复合语句,必须将return语句包含在其中

删除UDF:drop function fun_Name;

调用:select fun_Name(parameter_values);

流程控制语句

MySQL自定义函数中流程控制语句有这几种:if、case、loop、leave、iterate、repeat、while。每一个流程中可能包含单独语句们也可以使用begin ... and ...构造复合语句,构造可以被嵌套。
这里可以使用delimiter来对结束符进行修改。
* if语句:用来进行条件判断。示例代码如下:
MySQL
if age > 20 then set @count1 = @count1 + 1;
elseif age = 20 then set @count2 = @count2 + 1;
else set @count3 = @count3 + 1;
end if$
// 有age和20的大小关系来判断不同SQL语句的执行

* case语句:可是用来对条件语句进行判断,可以实现比if更加复杂的条件判断,示例代码如下:
MySQL
case age
when 20 then set @count1 = @count1 + 1;
else set @count2 = @count2 + 1;
end case$

MySQL
case
when age = 20 then set @count1 = @count1 + 1;
else set @count2 = @count2 + 1;
end case$

loop语句:可以是某些特定的语句重复执行,实现一个简单的循环,但是loop本身没有停止循环的语句,必须遇到leave语句等才能够停止循环。下面就构造一个loop循环的示例代码,但是没有退出循环的条件,所以是一个死循环!

add_num : loop
set @count = @count + 1;
end loop add_num$

leave语句:用于跳出循环,示例代码如下:

add_num : loop
set @count = @count + 1;
if @count = 100 then
leave add_num;
end loop add_num$
//当@count的值等于100时,退出循环!

iterate语句:用来跳出循环,但是iterate只能跳出本次循环,然后在直接进入下一次循环,示例代码如下:

add_num : loop
set @count = @count + 1;
if @count = 100 then
leave add_num;
else if mod(@count, 3) = 0 then
iterate add_num;
select * from employee;
end loop add_num$
// 在该语句中,@count值为100时跳出循环并结束,在循环过程中,如果@count能够整除3的话,则跳出本次循环,不再执行下面的代码,而是重新开始下一次的循环
使用leaver以及iterate跳出循环一定要清楚这两个之间的区别,使用后出现的效果是什么样子的!

repeat语句:是一个有条件控制的循环语句,当满足条件时就会跳出循环语句。示例代码如下:

repeat
set @count = @count + 1;
until @count = 100;
end repeat$
// 循环执行到@count到100时结束
while语句:while也是一个有条件控制的循环语句,但是和repeat不一样的是while是满足条件后才开始执行循环语句,而repeat是满足条件后就退出循环语句。示例代码如下:
MySQL
while @count < 100 do
set @count = @count + 1;
end while$
// 在@count值小于100时执行循环语句

reference

点击复制链接 与好友分享!回本站首页
上一篇:mysqldb安装错误
下一篇:CentOS7安装并配置MySQL
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站