mysql客户端创建函数_MySQL自定义函数

用户自定义函数(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自己来解释

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值