---
title: "存储函数 - OceanBase 数据库 V4.4.0 | OceanBase 文档中心"
description: "存储函数 函数可以理解为一种特殊的存储程序，函数可以有返回值，并且所有参数都是 IN 类型。 函数的结构 函数的结构如下，与存储过程相比，至少包含一个或多个 RETURNS 子句： FUNCTION sp_name ([func_parameter[,...]]) RETURNS type [characterist…"
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.4.0

# 存储函数

更新时间：2025-09-17 08:58:23

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.4.0/zh-CN/700.reference/600.pl-reference/200.pl-mysql/200.storage-object-mysql/400.pl-storage-function-mysql.md)  

函数可以理解为一种特殊的存储程序，函数可以有返回值，并且所有参数都是 `IN` 类型。

## 函数的结构

函数的结构如下，与存储过程相比，至少包含一个或多个 `RETURNS` 子句：

```sql
FUNCTION sp_name ([func_parameter[,...]])
    RETURNS type
    [characteristic ...]
    BEGIN    -- 开始执行
      SQL statement; [ SQL statement; ...]
    END;     -- 结束执行

func_parameter:
    param_name type

type:
    Any valid MySQL data type

characteristic: {
    COMMENT 'string'
  | LANGUAGE SQL
  | [NOT] DETERMINISTIC
  | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
  | SQL SECURITY { DEFINER | INVOKER }
}

```

## 函数的创建

函数通过 `CREATE FUNCTION` 语句进行创建，并需满足如下条件：

- 函数需要考虑返回值的设置。
 - 所有函数必须至少有一个 `RETURNS` 语句。
 - 函数要作为表达式被调用，需要与其他语句结合使用。

示例如下：

```sql
obclient> CREATE FUNCTION my_func (c1 CHAR(20)) RETURNS CHAR(50) DETERMINISTIC
     RETURN CONCAT('Thank ',c1,'!');
Query OK, 0 rows affected

obclient> SELECT my_func('You');
+----------------+
| my_func('You') |
+----------------+
| Thank You!     |
+----------------+
1 row in set

```

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
