首页 > 代码库 > 数据库自定义函数
数据库自定义函数
一、函数
在数据库中都有函数,这些函数属于系统函。除此之外用户也可以编写用户自定义函数。用户定义函数是存储在数据库中的代码块,可以把值返回到调用程序。调用时如同系统函数一样,如max(value)函数,其value被称为参数。函数一般功能比较简单,对于mysql函数只有传入参数,不像存储过程一样,有输入输出参数。
数据库函数特点如下:
- 存储函数将向调用者返回一个且仅返回一个结果值。
- 存储函数嵌入在sql中使用的,可以在select中调用,就像内建函数一样,比如cos()、hex()。
- 存储函数的参数类型类似于IN参数。
二、自定义函数
自定义函数简单语法:
CREATE FUNCTION 函数名称(
变量名称 类型,
变量名称 类型
)
RETURN 类型
BEGIN
-- 声明, 语句要完成的操作,
RETURN 变量;
END;
三、实例
例子中的函数使用mysql作为例子。表结构如下:
DROP TABLE IF EXISTS `person`;CREATE TABLE `person` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(255) DEFAULT NULL, `age` int(11) DEFAULT NULL, `password` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
1、不带参数的函数
DROP FUNCTION IF EXISTS get_count; -- 定义函数CREATE FUNCTION get_count() RETURNS INT -- 返回值类型BEGIN RETURN (SELECT COUNT(*) FROM person);END;-- 调用SELECT get_count() AS ‘total‘;
表示获取person表的所有记录,没有参数,有数值返回值。
2、带有参数的函数
DROP FUNCTION IF EXISTS get_age;CREATE FUNCTION get_age( id INT(11) -- 参数(参数可以多个))RETURNS INT(11) -- 返回值类型(只能有一个返回值)BEGIN DECLARE age INT; -- 定义变量 SET age = (SELECT p.age FROM person p where p.id = id); IF(ISNULL(age)) THEN -- 查询到的年龄不存在(如id错误,没有记录存在) RETURN 0; ELSE RETURN age; END IF;END;-- 函数调用SELECT get_age(2) as ‘age‘;
表示通过id获取年龄,有id参数,有数值返回值。
3、函数其他命令
SELECT get_age(2); -- 函数的调用SHOW FUNCTION STATUS; -- 查看所有函数SHOW CREATE FUNCTION get_age; -- 查看具体函数DROP FUNCTION get_age; -- 删除查看具体函数
函数的功能一般都是比较简单的,如求某个值,格式转换等。不像存储过程,一般逻辑都比较复杂。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。