转载地址:http://www.2cto.com/database/201212/177382.html
一、自定义函数(UDF)的特性和功能  www.2cto.com  
        函数能分返回字符串,整数或实数;
        可以定义一次作用于一行的简单函数,或作用于多行的组的集合函数;
二、基本操作
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       |  
+------+--------------+----------+----------------+---------------------+---------------------+---------------+ 

【转】MYSQL入门学习之十三:自定义函数的基本操作的更多相关文章

  1. 【转】MYSQL入门学习之十:视图的基本操作

    转载地址:http://www.2cto.com/database/201212/176775.html 一.视图的基本介绍  www.2cto.com           视图是虚拟的表.与包含数据 ...

  2. 【转】MYSQL入门学习之十一:触发器的基本操作

    转载地址:http://www.2cto.com/database/201212/176781.html 触发器是MySQL响应以下任意语句而自动执行的一条MySQL语句(或位于BEGIN和END语句 ...

  3. 【数据库】9.0 MySQL入门学习(九)——获得数据库和表的信息、日期计算、查询、选择特殊列

    1.0 SELECT语句用来从数据表中检索信息. SELECT what_to_select FROM which_table WHERE conditions_to_satisfy; what_to ...

  4. shell学习总结之自定义函数

    shell学习总结之自定义函数 Myfun (){ echo -n "now i is $i " ! [ "$i" ] && exit ; ec ...

  5. 【数据库】7.0 MySQL入门学习(七)——MySQL基本指令:帮助、清除输入、查询等

    1.0 help == ? 帮助指令,查询某个指令的解释.用法.说明等.详情参考博文: [数据库]6.0 MySQL入门学习(六)——MySQL启动与停止.官方手册.文档查询 https://www. ...

  6. 【数据库】4.0 MySQL入门学习(四)——linux系统环境下MySQL安装

    1.0 我的操作系统是CentOS Linux release 7.6.1810  (Core) 系统详细信息如下: Linux version 3.10.0-957.1.3.el7.x86_64 ( ...

  7. 【数据库】3.0 MySQL入门学习(三)——Windows系统环境下MySQL安装

    1.0 我的操作系统是window10 专业版 64位.,不过至少windows7以上系统都是一样的. 关于MySQL如何下载,请参考博文: [数据库]2.0 如何获得MySQL以及MySQL安装 h ...

  8. MySQL全面瓦解18:自定义函数

    定义 我们之前学习了MySQL的内置函数,非常丰富,满足了我们对数据操作的大部分需求. 但是如果有一些复杂的业务逻辑在数据库层面就可以完成,无需在程序层面完成的时候,这时候就可以写成MySQL自定义函 ...

  9. 【mysql的编程专题⑤】自定义函数

    用户自定义函数(user-defined function,UDF) 是一种对mysql的扩展途径,其用法与内置函数相同 创建自定义函数 语法 create function function_nam ...

随机推荐

  1. Java基础之泛型——使用通配符类型参数(TryWildCard)

    控制台程序 使用通配符类型参数可以设定方法的参数类型,其中的代码对于泛型类的实际类型参数不能有任何依赖.如果将方法的参数类型设定为Binary<?>,那么方法可以接受BinaryTree& ...

  2. PostgreSQL中字符串相关问题

    PostgreSQL的字符串类型有character.character varying和text的值.在使用character类型的时候, 它有自动填充空白的潜在影响,特别是在其它数据库(MySQL ...

  3. 在 msbuild 生成时,每次都生成很多css,js,img 文件,如果不想每次编译都有这些需要这样配置

    在 msbuild 不想生成一大堆文件,可以在 Web 项目的csproj 文件里,注释掉这一串. <!--<Import Project="$(VSToolsPath)\Web ...

  4. 前端开发与Seo基础

    网页代码优化       1:<title>标题:强调重点,重点关键词放在前面,每个页面的title尽量不相同 2:<meta keywords>关键词:列举出几个重要关键词, ...

  5. paper 10:支持向量机系列七:Kernel II —— 核方法的一些理论补充,关于 Reproducing Kernel Hilbert Space 和 Representer Theorem 的简介。

    在之前我们介绍了如何用 Kernel 方法来将线性 SVM 进行推广以使其能够处理非线性的情况,那里用到的方法就是通过一个非线性映射 ϕ(⋅) 将原始数据进行映射,使得原来的非线性问题在映射之后的空间 ...

  6. bash广播

    terminal1$: mkfifo script_name terminal2$: cat script_name terminal1$: script -f script_name 可以发广播到t ...

  7. 夺命雷公狗ThinkPHP项目之----企业网站24之网站前台获取当前栏目和顶级栏目

    我们现在要实现的是取出网站当前栏目名称和顶级分类名称,如下所示: 列表页的和单页的不能总是写死的吧?? 我能就要想办法去让他变活的才可以解决问题噢,我们已经有了他的cate_id ,然后我们就可以通过 ...

  8. 四则运算GUI版本

    要求:用户界面新增支持 Windows GUI,同时保留原有命令行下所有功能.提示: 先测试驱动开发,然后重构代码,以GUI为目标修改"核心"函数,把与GUI/Console相关的 ...

  9. zw版【转发·台湾nvp系列Delphi例程】HALCON ObjToInteger1-4

    zw版[转发·台湾nvp系列Delphi例程]HALCON ObjToInteger1 procedure TForm1.Button1Click(Sender: TObject);var img, ...

  10. zw版【转发·台湾nvp系列Delphi例程】HALCON RegionToBin1

    zw版[转发·台湾nvp系列Delphi例程]HALCON RegionToBin1 unit Unit1;interfaceuses Windows, Messages, SysUtils, Var ...