用户自定义函数(user-defined function,UDF)是一种对MySQL扩展的途径,其用法与内置函数相同。

  自定义函数两个必要条件:

        参数:可以有另个或多个

        返回值:只能有一个

创建自定义函数:

   CERATE FUNCTION function_name([指定参数类型], ...... )

   RETURNS {STRING|INTEGER|REAL|DECIMAL}

   RETURN  [characteristic ...] routine_body  

注释:RETURNS后接返回值的类型

   routine_body指的是函数体:

            (1)函数体有合法的SQL语句构成

            (2)函数体可以是简单的SELECT或INSERT语句

            (3)函数体如果为复合结构则使用BEGIN...END语句

            (4)复合结构可以包含声明,循环,控制结构,......

   characteristic是指自定义函数的特性,形式为:COMMENT  'string' | {CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA | SQL SECURITY {DEFINER | INVOKER}

      COMMETN:注释

      CONTAINS SQL:包含SQL语句,但不包含读或写数据的语句

      NO SQL:不包含SQL语句

      READS SQL DARA:包含读数据的语句

      MODIFIES SQL DATA:包含

调用函数:SELECT  function_name([参数])

删除自定义函数:DROP  FUNCTION  function_name例子:

  1、创建一个无参函数,实现格式化当前日期的功能

  ->CREATE  FUNCTION  f1()  RETURNS  varchar(30)  RETURN  DATE_FORMAT(NOW(),'%Y年%m月%d日 %H点:%i分:%s秒')

  2、创建一个带参的函数,实现计算平均值的功能

  ->CREATE  FUNCTION  f2(num1 SMALLINT  UNSIGNED,num2 SMALLINT  UNSIGNED)  RETURNS  FLOAT(10,2)  UNSIGNED  RETURN  (num1+num2)/2;

  3、创建一个复合函数,用BEGIN...END

  mysql>DELIMITER  //

  mysql>CREATE  FUNCTION  adduser(username VARCHAR(20))

      ->RETURNS INT UNSIGNED

      ->BEGIN

      ->INSERT test(username)  VALUE(username);

      ->RETURN  LAST_INSERT_ID();

      ->END

      ->//

  mysql>DELIMITER  ;

tips:

  在 程序被定义的时候,用mysql客户端delimiter命令来把语句定界符从 ;变为//。这就允许用在 程序体中的;定界符被传递到服务器而不是被mysql自己来解释

MySQL自定义函数的更多相关文章

  1. mysql 自定义函数

    原文:http://www.cnblogs.com/zhangminghui/p/4113160.html 引言 MySQL本身提供了内置函数,这些函数的存在给我们日常的开发和数据操作带来了很大的便利 ...

  2. mysql自定义函数并在存储过程中调用,生成一千万条数据

    mysql 自定义函数,生成 n 个字符长度的随机字符串 -- sql function delimiter $$ create function rand_str(n int) returns VA ...

  3. MySQL 自定义函数CREATE FUNCTION实例

    分享一个MySQL 自定义函数CREATE FUNCTION的实例.mysql> delimiter $$mysql> CREATE FUNCTION myFunction-> (i ...

  4. MySQL自定义函数(四十六)

    MySQL自定义函数 一.什么是MYSQL自定义函数? mysql当中的自定义函数,我们简称为UDF,它实际上是一种对MySQL扩展的途径,其用法与内置函数相同. 二.自定义函数应该具备哪些条件? 我 ...

  5. MySQL自定义函数用法详解-复合结构自定义变量/流程控制

    自定义函数 (user-defined function UDF)就是用一个象ABS() 或 CONCAT()这样的固有(内建)函数一样作用的新函数去扩展MySQL. 所以UDF是对MySQL功能的一 ...

  6. MySQL自定义函数与存储过程

    1.前置条件 MySQL数据库中存在表user_info,其结构和数据如下: mysql> desc user_info; +-----------+----------+------+---- ...

  7. mysql自定义函数语法

    创建函数 DELIMITER $$DROP FUNCTION IF EXISTS `test` $$CREATE FUNCTION `test`(a int ,b int)RETURNS int BE ...

  8. java mysql自定义函数UDF之调用c函数

    正如sqlite可以定义自定义函数,它是通过API定义c函数的,不像其他,如这里的mysql.sqlite提供原生接口就可以方便的调用其他语言的方法,同样的mysql也支持调用其它语言的方法. goo ...

  9. MySql自定义函数-关于保留小数位的特殊需求

    背景 昨天,关于价格详情接口又来了一个小需求,而且有点特别.价格显示:改为保留两位小数,没错,就是保留两位小数.大家是不是想说这没啥特别的...数据库都有函数搞定了.例如四舍五入的ROUND(x,d) ...

随机推荐

  1. iOS计算完整文字高度(适应iOS 10)

    动态计算文字的高度:(切记LineSapcing>=2,不然会显示不全) +(CGSize) boundingALLRectWithSize:(NSString*) txt Font:(UIFo ...

  2. RDIFramework.NET ━ .NET快速信息化系统开发框架 记录所有操作的Sql

    在实际开发或试运行过程中,我们有时需要查看或分析模块执行的所有sql,以便进行相关分析.有时我们可以通过数据库自带的软件抓取,如:SQL Server Profiler.在我们RDIFramework ...

  3. powershell

    function 怎么执行: http://www.cnblogs.com/bradwarden/p/3370260.html PowerShell script can be used in: 1. ...

  4. WebForm 内置对象

    内置对象: Response对象:响应请求 Response.Write("<script>alert('添加成功!')</script>"); Respo ...

  5. Datatypes translation between Oracle and SQL Server

    Datatypes translation between Oracle and SQL Server part 1: character, binary strings Datatypes tran ...

  6. LINQ使用细节之.AsEnumerable()和.ToList()的区别

    先看看下面的代码,用了 .AsEnumerable(): 1 var query = (from a in db.Table2 where a = SomeCondition3 select a.So ...

  7. 通过jxl 读取excel 文件中的日期,并计算时间间隔

    java读取excel里面的日期会出现相差8小时的问题. 比如excel里面有一个日期是:2012-7-2 17:14:03秒,用Cell cell=readSheet.getCell(colNo, ...

  8. html标签中meta属性使用介绍

    前言 meta是html语言head区的一个辅助性标签.也许你认为这些代码可有可无.其实如果你能够用好meta标签,会给你带来意想不到的效果,meta标签的作用有:搜索引擎优化(SEO),定义页面使用 ...

  9. 用ssh整合时,用sessionfactory的getCurrentSession()获取不到session

    在用ssh整合时,一开始用的是getCurrentSession(),获取当前线程上的session,但是总是抛异常,不能获取. 后来用sessionfactory的openSession(),但是, ...

  10. python之在线PK游戏(第六天)

      本节作业: 熟练使用类和模块,写一个交互性强.有冲突的程序. 故本次写了一个文字回合制的PK游戏,系统主程序为根目录下的:game_menu.py 1. 系统功能模块: 第六天的作业:文字游戏程序 ...