---
title: "ALTER FUNCTION - OceanBase 数据库 V4.2.1 | OceanBase 文档中心"
description: "ALTER FUNCTION ALTER FUNCTION 语句用于更改存储函数的一个或多个特性。 ALTER FUNCTION 语句的语法如下： ALTER FUNCTION func_name [characteristic ...] characteristic: { COMMENT &#x27;string&#x27; | LA…"
---
切换语言

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

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

# ALTER FUNCTION

更新时间：2026-07-15 20:56:55

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.2.1/zh-CN/700.reference/500.sql-reference/300.pl-reference/200.pl-mysql/600.sql-statements-for-pl-stored-programs-mysql/100.alter-function-mysql.md)  

`ALTER FUNCTION` 语句用于更改存储函数的一个或多个特性。

`ALTER FUNCTION` 语句的语法如下：

```sql
ALTER FUNCTION func_name [characteristic ...]

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

```

`ALTER FUNCTION` 语句不能用于更改存储函数的参数或主体，如果需要进行此类更改，必须使用 `DROP FUNCTION` 和 `CREATE FUNCTION` 删除并重新创建函数。

您必须具有该函数的 `ALTER ROUTINE` 权限。默认情况下，该权限自动授予函数创建者。

有关例程使用数据的特性信息如下：

- `CONTAINS SQL` 表示例程不包含读写数据的语句，这是默认值。例如，`SET@x=1` 或 `DO RELEASE_LOCK('abc')` 会被执行但既不读取也不写入数据。
 - `NO SQL` 表示例程不包含 SQL 语句。
 - `READS SQL DATA` 表示例程包含读取数据的语句（例如 `SELECT`），但不包含写入数据的语句。
 - `MODIFIES SQL DATA` 表示例程包含可能写入数据的语句（例如 `INSERT` 或 `DELETE`）。

`SQL SECURITY` 可以是 `DEFINER` 或 `INVOKER`，来指定例程是使用指定用户（此用户必须具有访问与例程关联的数据库的权限）的权限执行，还是使用调用者的权限执行。默认值为 `DEFINER`。调用例程的用户必须具有该例程的 `EXECUTE` 权限。

`ALTER FUNCTION` 的示例如下：

```sql
obclient> ALTER FUNCTION my_func LANGUAGE SQL READS SQL DATA  COMMENT '示例';
Query OK, 0 rows affected

```

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