视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
MYSQL入门学习之十三:自定义函数的基本操作_MySQL
2020-11-09 18:27:09 责编:小采
文档


bitsCN.com

MYSQL入门学习之十三:自定义函数的基本操作

相关链接:

MYSQL入门学习之一:基本操作

http:///database/201212/173868.html

MYSQL入门学习之二:使用正则表达式搜索

http:///database/201212/173869.html

MYSQL入门学习之三:全文本搜索

http:///database/201212/173873.html

MYSQL入门学习之四:MYSQL的数据类型

http:///database/201212/175536.html

MYSQL入门学习之五:MYSQL的字符集

http:///database/201212/175541.html

MYSQL入门学习之六:MYSQL的运算符

http:///database/201212/175862.html

MYSQL入门学习之七:MYSQL常用函数

http:///database/201212/1758.html

MYSQL入门学习之八:数据库及表的基本操作

http:///database/201212/175867.html

MYSQL入门学习之九:索引的简单操作

http:///database/201212/176772.html

MYSQL入门学习之十:视图的基本操作

http:///database/201212/176775.html

MYSQL入门学习之十一:触发器的基本操作

http:///database/201212/176781.html

MYSQL入门学习之十二:存储过程的基本操作

http:///database/201212/177380.html

一、自定义函数(UDF)的特性和功能

函数能分返回字符串,整数或实数;

可以定义一次作用于一行的简单函数,或作用于多行的组的集合函数;

二、基本操作

1、创建自定义函数

CREATE [AGGREGATE] FUNCTION function_name RETURNS {STRING|INTEGER|REAL}

BEGIN

//函数实现的语句

END;

aggregate 指定创建的函数是普通的自定义函数,还是AGGREGATE函数。

function_name 是用在SQL声明中以备调用的函数名字。

RETURNS 子句说明函数返回值的类型。

每次服务器启动的时候会重新加载所有有效函数,除非使用--skip-grant-tables参数启动mysqld。在这种情况下, 将跳过UDF的初始化,UDF不可用。

一个AGGREGATE函数就像一个MySQL固有的集合(总和)函数一样起作用,比如,SUM或COUNT()函数。要使得AGGREGATE 起作用,mysql.func表必须包括一个type列。如果mysql.func表没有这一 列,则应该运行mysql_fix_privilege_tables脚本来创建此列。

示例:

[sql]

mysql> delimiter //

mysql> create function fun_add_rand(

-> in_int int

-> )

-> RETURNS int

-> BEGIN

-> declare i_rand int;

-> declare i_return int;

->

-> set i_rand=floor(rand()*100);

-> set i_return = in_int + i_rand;

->

-> return i_return;

-> END;

-> //

mysql> delimiter ;

2、使用自定义函数

示例:

[sql]

mysql> select id from test_inn;

+------+

| id |

+------+

| 1 |

| 1 |

| 1 |

| 1 |

+------+

mysql> select fun_add_rand(id) from test_inn;

+------------------+

| fun_add_rand(id) |

+------------------+

| 91 |

| 34 |

| 93 |

| 66 |

+------------------+

3、删除自定义函数

DROP FUNCTION [ IF EXISTS ] function_name;

示例:

[sql]

mysql> drop function if exists fun_add_rand;

4、查看自定义函数创建信息

SHOW CREATE FUNTION function_name;

示例:

[sql]

mysql> show create function fun_add_rand;

+--------------+----------+-----------------------------------------------------------+----------------------+----------------------+--------------------+

| Function | sql_mode | Create Function | character_set_client | collation_connection | Database Collation |

+--------------+----------+-----------------------------------------------------------+----------------------+----------------------+--------------------+

| fun_add_rand | | CREATE DEFINER=`root`@`localhost` FUNCTION `fun_add_rand`(

in_int int

) RETURNS int(11)

BEGIN

declare i_rand int;

declare i_return int;

set i_rand=floor(rand()*100);

set i_return = in_int + i_rand;

return i_return;

END | latin1 | latin1_swedish_ci | latin1_swedish_ci |

+--------------+----------+-----------------------------------------------------------+----------------------+----------------------+--------------------+

5、查看自定义函数状态

SHOW FUNCTION STATUS [ LIKE '' ];

示例:

[sql]

mysql> show function status like 'fun%';

+------+--------------+----------+----------------+---------------------+---------------------+---------------+

| Db | Name | Type | Definer | Modified | Created | Security_type |

+------+--------------+----------+----------------+---------------------+---------------------+---------------+

| test | fun_add_rand | FUNCTION | root@localhost | 2012-12-18 20:08:50 | 2012-12-18 20:08:50 | DEFINER |

+------+--------------+----------+----------------+---------------------+---------------------+---------------+

bitsCN.com

下载本文
显示全文
专题