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

转载地址: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 | [email protected] | 2012-12-18 20:08:50 |
2012-12-18 20:08:50 | DEFINER       |

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

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

时间: 2024-10-07 05:27:03

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

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

转载地址:http://www.2cto.com/database/201212/176781.html 触发器是MySQL响应以下任意语句而自动执行的一条MySQL语句(或位于BEGIN和END语句之间的一组语句):  www.2cto.com DELETE: INSERT: UPDATE: 使用触发器,需要MySQL5或之后的版本支持. 一.触发器基本操作 1.创建触发器 创建触发器时,需要给出4条信息: 唯一的触发器名:(虽然MySQL5允许不同的表上的触发器名称相同,但一般最好不要这么做

shell学习总结之自定义函数

shell学习总结之自定义函数 Myfun (){ echo patams1 is $1 echo -n "now i is $i " ! [ "$i" ] && exit ; echo jj return '1' } myf=$(Myfun); echo myf Myfun 12 unset Myfun Myfun echo 'the end !'$myf 别人的 #! bin/bash # ----------------------------

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

转载地址:http://www.2cto.com/database/201212/173873.html 一.理解全文本搜索 www.2cto.com 1.MyISAM支持全文本搜索,而InnoDB不支持. 2.在使用全文本搜索时,MySQL不需要分别查看每个行,不需要分别分析和处理每个词.MySQL创建指定列中各词的一个索引,搜索可以针对这些词进行.这样MySQL可以快速有效地决定哪些词匹配,哪些词不匹配,它们匹配的频率,等等. 二.使用全文本搜索 1.为了进行全文本搜索,必须索引被搜索的列,

mysql 报错之创建自定义函数

I experienced this error while trying to alter one of my stored procedures remotely on a master server. After some research, I ended up getting information from “Binary Logging of Stored Programs“. From MySQL Reference in verbatim:When you create a s

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

1.0 SELECT语句用来从数据表中检索信息. SELECT what_to_select FROM which_table WHERE conditions_to_satisfy; what_to_select指出你想要看到的内容,可以是列的一个表,或*表示"所有的列". which_table指出你想要从其检索数据的表. WHERE子句是可选项,如果选择该项,conditions_to_satisfy指定行必须满足的检索条件. 2.0 在我的博文"MySQL入门学习(八

C 入门 第六节 自定义函数

/*//  1. 无参无返回值void hello()    {        printf("hello world!\n");    }//  2. 无参有返回值int peoplweCount(){        return 10;    }//  3. 有参有返回值int max(int a, int b)    {        return a > b ? a : b;    }//  4. 有参无返回值(打印一个数)void number(int a)    { 

mysql入门学习

一.操作数据库 1.创建数据库 CREATE DATABASE [IF NOT EXISTS] db_name   [create_specification [, create_specification] ...] create_specification:    [DEFAULT] CHARACTER SET charset_name | [DEFAULT] COLLATE collation_name ~创建一个名称为mydb1的数据库. CREATE DATABASE mydb1; ~

swift学习笔记之—自定义函数的规则说明

原文出自:www.hangge.com  转载请保留原文链接:http://www.hangge.com/blog/cache/detail_517.html 1,无返回值的函数 func test(name:String){ } 2,返回一个返回值 func test(name:String) -> Bool{ return true } 3,返回由多个值组成的复合返回值 func test(name:String) -> (Int,Bool){ var position = 1 var v

SQL入门经典(九) 之自定义函数

UDF和存储过程很类似,用户自定义函数是一组有序的T-SQL语句,这些语句被预先优化和编译,并且可以作为一个单元来测试调用.UDF和存储过程的主要区别在于结果返回方式,为了能支持更多返回值,UDF比存储过程有跟多限制. UDF基本语法:CREATE FUNCTION <function name> (<@parameter name> <data type>[default value][......n) RETURNS  <返回类型> AS  begin