数据库自定义函数

简介: 一、函数   在数据库中都有函数,这些函数属于系统函。除此之外用户也可以编写用户自定义函数。用户定义函数是存储在数据库中的代码块,可以把值返回到调用程序。调用时如同系统函数一样,如max(value)函数,其value被称为参数。

一、函数

  在数据库中都有函数,这些函数属于系统函。除此之外用户也可以编写用户自定义函数。用户定义函数是存储在数据库中的代码块,可以把值返回到调用程序。调用时如同系统函数一样,如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;  -- 删除查看具体函数

  函数的功能一般都是比较简单的,如求某个值,格式转换等。不像存储过程,一般逻辑都比较复杂。

目录
打赏
0
0
0
0
2
分享
相关文章
PostgreSql | 数据库 |自定义函数的设计和实现
PostgreSql | 数据库 |自定义函数的设计和实现
172 0
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
docker拉取MySQL后数据库连接失败解决方案
通过以上方法,可以解决Docker中拉取MySQL镜像后数据库连接失败的常见问题。关键步骤包括确保容器正确启动、配置正确的环境变量、合理设置网络和权限,以及检查主机防火墙设置等。通过逐步排查,可以快速定位并解决连接问题,确保MySQL服务的正常使用。
252 82
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL 数据库 SQL 语句调优方法详解(2-1)
本文深入介绍 MySQL 数据库 SQL 语句调优方法。涵盖分析查询执行计划,如使用 EXPLAIN 命令及理解关键指标;优化查询语句结构,包括避免子查询、减少函数使用、合理用索引列及避免 “OR”。还介绍了索引类型知识,如 B 树索引、哈希索引等。结合与 MySQL 数据库课程设计相关文章,强调 SQL 语句调优重要性。为提升数据库性能提供实用方法,适合数据库管理员和开发人员。
缓存与数据库的一致性方案,Redis与Mysql一致性方案,大厂P8的终极方案(图解+秒懂+史上最全)
缓存与数据库的一致性方案,Redis与Mysql一致性方案,大厂P8的终极方案(图解+秒懂+史上最全)
Docker Compose V2 安装常用数据库MySQL+Mongo
以上内容涵盖了使用 Docker Compose 安装和管理 MySQL 和 MongoDB 的详细步骤,希望对您有所帮助。
248 42
MySQL生产环境迁移至YashanDB数据库深度体验
这篇文章是作者将 MySQL 生产环境迁移至 YashanDB 数据库的深度体验。介绍了 YashanDB 迁移平台 YMP 的产品相关信息、安装步骤、迁移中遇到的各种兼容问题及解决方案,最后总结了迁移体验,包括工具部署和操作特点,也指出功能有优化空间及暂不支持的部分,期待其不断优化。

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等