设为首页 加入收藏

TOP

MySQL学习——操作自定义函数(一)
2019-10-09 20:03:55 】 浏览:101
Tags:MySQL 学习 操作 定义 函数

MySQL学习——操作自定义函数

摘要:本文主要学习了使用DDL语句操作自定义函数的方法。

了解自定义函数

是什么

自定义函数是一种与存储过程十分相似的过程式数据库对象。它与存储过程一样,都是由SQL语句和过程式语句组成的代码片段,并且可以被应用程序和其他SQL语句调用。

自定义函数与存储过程的区别

自定义函数不能拥有输出参数,这是因为自定义函数自身就是输出参数;而存储过程可以拥有输出参数。

自定义函数中必须包含一条return语句,而这条特殊的SQL语句不允许包含于存储过程中。

可以直接对自定义函数进行调用而不需要使用call语句,而对存储过程的调用需要使用call语句。

创建自定义函数

语法

1 create function 函数名([参数])
2 returns 类型
3 函数主体

说明

1)函数名

指定自定义函数的名称。注意,自定义函数不能与存储过程具有相同的名称。

2)参数

用于指定自定义函数的参数。这里的参数只有名称和类型,不能指定关键字in、out和inout。

3)类型

用于声明自定义函数返回值的数据类型。

4)函数主体

自定义函数的主体部分,也称函数体。所有在存储过程中使用的SQL语句在自定义函数中同样适用,包括前面所介绍的局部变量、set语句、流程控制语句、游标等。

除此之外,自定义函数体还必须包含一个 return 返回值 语句,用于指定自定义函数的返回值。在 return 返回值 语句中包含select语句时,select语句的返回结果只能是一行且只能有一列值。

实例

创建不带参数的自定义函数:

1 mysql> create function showTopGrade()
2     -> returns int(10)
3     -> return (select max(grade) from score);
4 Query OK, 0 rows affected (0.00 sec)
5 
6 mysql> 

创建带有参数的自定义函数:

1 mysql> create function getStuGrade(stu varchar(45))
2     -> returns int(10)
3     -> return (select max(grade) from score where student = stu);
4 Query OK, 0 rows affected (0.00 sec)
5 
6 mysql> 

使用自定义函数

语法

1 select 自定义函数名称([参数]);

实例

1 mysql> select showTopGrade();
2 +----------------+
3 | showTopGrade() |
4 +----------------+
5 |             95 |
6 +----------------+
7 1 row in set (0.00 sec)
8 
9 mysql> 

查看自定义函数

查看所有自定义函数

 1 mysql> mysql> show function status;
 2 +------+--------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
 3 | Db   | Name         | Type     | Definer        | Modified            | Created             | Security_type | Comment | character_set_client | collation_connection | Database Collation |
 4 +------+--------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
 5 | demo | getGrade     | FUNCTION | root@localhost | 2019-09-07 18:40:17 | 2019-09-07 18:40:17 | DEFINER       |         | utf8                 | utf8_general_ci      | gb2312_chinese_ci  |
 6 | demo | getStuGrade  | FUNCTION | root@localhost | 2019-09-10 00:25:54 | 2019-09-10 00:25:54 | DEFINER       |         | utf8                 | utf8_general_ci      | gb2312_chinese_ci  |
 7 | demo | showTopGrade | FUNCTION | root@localhost | 2019-09-10 00:19:40 | 2019-09-10 00:19:40 | DEFINER       |         | utf8                 | utf8_general_ci      | gb2312_chinese_ci  |
 8 +------+--------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
 9 3 rows in set (0.00 sec)
10 
11 mysql> 

查看自定义函数的创建语句

1 mysql> mysql> show create function getGrade;
2 +----------+--------------------------------------------+------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+--------------------+
3 | Function | sql_mode                                   | Create Function                                                                                                        | character_set_client | collation_connection | Database Collation |
4 +----------+--------------------------------------------+------------------------------------------------------------------------------------------------------------------
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇马蜂窝数据仓库的架构、模型与应.. 下一篇mssql sqlserver text、image字段..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目