七、自定义函数

7-1回顾和概述

 

7-2自定义函数简介

1.自定义函数

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

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

  • a.参数
  • b.返回值

函数可以返回任意类型的值,同样可以接受这些类型的参数;

函数的参数与返回值之间,没有必然的联系。

2.创建自定义函数

CREATE FUNCTION function_name

RETURNS

{STRING|INTEGER|REAL|DECIMAL}

routine_body - 函数体

3.关于函数体

  • (1)函数体由合法的SQL语法构成;
  • (2)函数体可以是简单的SELECT或INSERT语句;
  • (3)函数体如果为复合结构则使用BEGIN...END语句;
  • (4)复合结构可以包括声明,循环,控制结构。

 

7-3创建不带参数的自定义函数

创建日期时间自定义函数:

create function f1()

returns varchar(30)

return date_format(now(),'%Y年%m月%d日 %H点:%i分:%s秒');

select f1();

DATE_FORMAT()函数在格式化日期格式时,应该是百分号在代表年、月、日的字母前面,字母的大小写不同,所表示格式也有所区别:  

select date_format(now(),'%Y-%m-%d'),其结果是: 2015-07-04

因此,各字母所表示的含义为: Y:2015 y:15 M:july m:07 D:4th d:04

 

7-4 创建带有参数的自定义函数

CREATE FUNCTION f2(num1 SMALLINT UNSIGNED,num2 SMALLINT UNSIGNED)

RETURNS FLOAT(10,2) UNSIGNED

RETURN(num1+num2)

删除函数: DROP FUNCTION fun_name;

 

7-5创建具有复合结构函数体的自定义函数

//创建具有复合结构函数体的自定义函数

修改分隔符:DELEMITER 分隔符

Eg:DELIMITER // /* 将分隔符修改为 '//' */

  • 当函数体内需要执行的是多条语句时,要使用BEGIN...END语句
  • 且当编写函数体内容的时候,需要使用 DELIMITER 关键字将分隔符先修改为别的,否则编写语句的时候写到 ';' 的时候会直接执行,导致函数编写失败

删除函数:

DROP FUNCTION [IF EXISTS] function_name

Eg:

DELIMITER //

CREATE FUNCTION ADD_USER(p_id SMALLINT,username VARCHAR(20))

RETURNS INT UNSIGNED

BEGIN

INSERT user(p_id,username) VALUES(p_id,username);

RETURN LAST_INSERT_ID();

END

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值