---
title: "使用 ODC 创建函数 | OceanBase 文档中心"
description: 使用 ODC 创建函数 OceanBase 开发者中心（OceanBase Developer Center，ODC）支持可视化方式创建函数。本文介绍如何使用 ODC 创建函数。 概述 函数是在数据库内定义的子程序，可以从内置 SQL 语句中调用函数。如果自带的函数不能满足业务需求，则可以通过 ODC 新建函数，添加…
image: https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*OSPzQ6GUQF4AAAAAQHAAAAgAeiGDAQ/original
---
切换语言

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

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

# 使用 ODC 创建函数

更新时间：2023-07-19 13:03:07

OceanBase 开发者中心（OceanBase Developer Center，ODC）支持可视化方式创建函数。本文介绍如何使用 ODC 创建函数。

## 概述

函数是在数据库内定义的子程序，可以从内置 SQL 语句中调用函数。如果自带的函数不能满足业务需求，则可以通过 ODC 新建函数，添加自定义函数，以实现某些功能运算和完成各种特定操作，且自定义函数可以减少重复编码，提高程序可读性。

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

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

- 函数有且仅有一个返回，适合做处理数据后返回一个结果；存储过程可有 0 个或多个返回，适合做批量插入、批量更新。
 - 可以直接通过 `SELECT` 语句调用函数，而存储过程的调用需要使用 `CALL` 语句。

![创建函数1](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/odc/%E5%88%9B%E5%BB%BA%E5%87%BD%E6%95%B01.png)

如上图所示，创建函数包含以下 6 个步骤：

1. 输入函数名称。
 2. 选择函数返回值的数据类型。
 3. 添加参数。
 4. 确定新建函数信息。
 5. 编辑函数信息。
 6. 完成新建函数。

## 操作步骤

以在 ODC 中创建员工函数（function_emp）为例，函数 function_emp 中包含 id INT 类型的参数，根据 id 获取员工姓名。具体操作步骤如下：

### 步骤 1：输入函数名称

在 OceanBase 开发者中心（OceanBase Developer Center，ODC）单击连接名进入连接后，在左导航栏中单击 **函数** 标签可以查看函数列表。在函数列表的右上角，单击 + 创建函数，或是在 ODC 上方导航栏中单击 **新建** 以创建所需对象。

![1](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/odc/333/%E6%96%B0%E5%BB%BA%E5%87%BD%E6%95%B0-%E6%AD%A5%E9%AA%A41.png)

### 步骤 2：选择函数返回值的数据类型

### 步骤 3：添加参数

1. 参数即调用函数时传入的信息，需指定参数的 **名称** 、 **类型** 和 **长度** 。
 2. 添加函数提供三种功能操作：

   | 功能项 | 说明 |
   | --- | --- |
   | 弹窗引导辅助菜单 | 通过弹窗引导辅助菜单，可添加、删除、上下移动参数。 |
   | 单击表序号 | - 单击表序号，选中整行，显示辅助菜单（删除、上/下移动）。     - 单击并选中表序号，可拖动整行参数以调整顺序。 |
   | 鼠标右键操作 | 右键单击鼠标选中整行，进行复制行 / 向下移动一行。 | |

   > **说明**
   >
   >  
   >
   > 复制行后，可选中某行并通过快捷键 Command + V / Ctrl + V 进行粘贴。

### 步骤 4：确定新建函数

单击 **确定**，进入 SQL 创建确认页面。

### 步骤 5：编辑函数信息

![5](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/odc/333/%E6%96%B0%E5%BB%BA%E5%87%BD%E6%95%B0-%E6%AD%A5%E9%AA%A45.png)

在 SQL 创建确认页面，编辑函数语句。

同时，在编辑页面的工具栏中提供了以下功能键：

| 功能 | 说明 |
| --- | --- |
| 格式化 | 单击该按钮对选中的 SQL 语句或当前 SQL 窗口中的所有 SQL 语句进行统一的格式化（缩进、换行和高亮关键字等操作）。 |
| 查找/替换 | 在查找框内输入内容以对脚本进行检索，查找后可在替换框内输入内容以对查找内容进行替换。 |
| 撤销 | 将脚本回退到上一步操作执行的结果。 |
| 重做 | 执行 **撤销** 操作后，对脚本重新执行撤销前的操作。 |
| 大小写 | 提供 **全部大写** 、 **全部小写** 和 **首字母大写** 三种效果，为脚本中选中的语句转换为对应形式。 |
| 缩进 | 提供 **添加缩进** 和 **删除缩进** 两种效果，为脚本中选中的语句添加或删除包含的缩进。 |
| 注释 | 提供 **添加注释** 和 **删除注释** 两种效果，为脚本中选中的语句转换为注释或转换为 SQL 语句。 |
| IN 值转化 | 可以将如 A B 的格式转化为 ('A','B') 的格式。 |

用户可以在 SQL 创建确认页面编辑创建的函数语句。语法格式如下：

```sql
CREATE FUNCTION function_name ([var_name var_type[,...]])
RETURNS return_type
 delarification_block
BEGIN
    function_body
EXCEPTION
    exception_handler
END;

```

参数说明：

| 参数 | 说明 |
| --- | --- |
| function_name | 指定自定义函数的名称。   **注意**    自定义函数不能与存储过程具有相同的名称。 |
| var_name var_type | 用于指定自定义函数的参数。 该参数只有名称和类型，不能指定关键字 IN、OUT 和 INOUT。 |
| RETURNS return_type | 用于声明自定义函数返回值的数据类型。其中，`return_type` 用于指定返回值的数据类型。   **注意**    在 RETURN VALUE 语句中包含 SELECT 语句时，SELECT 语句的返回结果只能是一行且只能有一列值。 |
| function_body | 自定义函数的主体部分，亦称函数体。 函数体必须包含一个 `RETURN` 语句。 当函数体为复合结构时，需要使用 BEGIN...END 语句。 |

示例：

```sql
CREATE FUNCTION `function_emp` ( `id` int(45)) RETURNS VARCHAR(300)

-- 函数体开始
BEGIN

-- 申明变量
DECLARE
  a VARCHAR(300);

-- 变量赋值
SELECT
  name INTO a
FROM
  employee
WHERE
  emp_no = id;

-- 返回值
RETURN a;

-- 函数体结束
END

```

### 步骤 6：完成新建函数

单击 **创建** ，完成新建函数后，可以如同调用系统内置函数一样，使用 `SELECT` 语句调用用户自定义的函数。

> **说明**
>
>  
>
> 在左侧导航栏中，右键鼠标单击函数列表中的函数名，通过弹出的管理操作列表（包括 **查看**、 **新建**、**运行**、 **下载**、**删除** 和 **刷新** ），可快速管理和操作目标对象。

语法格式：

```sql
SELECT function_name ([function_parameter [,...]])

```

示例：

```sql
SELECT function_emp(2);

```

![6.1](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/odc/333/%E6%96%B0%E5%BB%BA%E5%87%BD%E6%95%B0-%E6%AD%A5%E9%AA%A46-1.png)

## 相关信息

- [使用 ODC 创建表](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000357163)
 - [使用 ODC 创建视图](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000357164)
 - [使用 ODC 创建存储过程](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000357166)

 上一篇 下一篇 ![有帮助](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) 咨询热线
