

# `ALTER FUNCTION`
<a name="alter-function-syntax-support"></a>

`ALTER FUNCTION` 更改函数的定义。

## 支持的语法
<a name="alter-function-supported-syntax"></a>

```
ALTER FUNCTION name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
    RENAME TO new_name
ALTER FUNCTION name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
    OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
ALTER FUNCTION name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
    SET SCHEMA new_schema
```

## 说明
<a name="alter-function-description"></a>

`ALTER FUNCTION` 更改现有函数的定义。

 您必须拥有该函数的所有权才能使用 `ALTER FUNCTION`。要更改函数的架构，您还必须对新架构具有 `CREATE` 权限。要更改所有者，您必须是新的拥有角色的成员，并且该角色必须对函数的架构拥有 `CREATE` 权限。

**`RENAME TO`**  
更改函数的名称。

**`OWNER TO`**  
将表的所有者更改为指定的用户。

**`SET SCHEMA`**  
将函数移到另一个架构中。

## 参数
<a name="alter-function-parameters"></a>

**{{name}}**  
要更改的现有函数的名称（可有选择地设为架构限定）。

**{{argmode}}**  
参数的模式：`IN`、`OUT`、`INOUT` 或 `VARIADIC`。如果省略，则默认值为 `IN`。该函数仅使用输入参数进行标识，因此仅列出 `IN`、`INOUT` 和 `VARIADIC` 参数。

**{{argname}}**  
参数的名称。

**{{argtype}}**  
函数参数的数据类型。

**{{new\_name}}**  
函数的新名称。

**{{new\_owner}}**  
函数的新所有者。

**{{new\_schema}}**  
函数的新架构。

## 注意事项
<a name="alter-function-considerations"></a>

要更改上面所列属性以外的其他属性，请使用 `CREATE OR REPLACE FUNCTION`。有关更多信息，请参阅 [`CREATE FUNCTION`](create-function-syntax-support.md)。

要添加、更改或删除函数注释，请使用单独的 `COMMENT ON FUNCTION` 命令。

## 示例
<a name="alter-function-examples"></a>

将函数 `add`（接受两个 `integer` 参数）重命名为 `sum_two`：

```
ALTER FUNCTION add(integer, integer) RENAME TO sum_two;
```

将函数 `add` 的所有者更改为当前用户：

```
ALTER FUNCTION add(integer, integer) OWNER TO CURRENT_USER;
```

将函数 `add` 移到架构 `utils` 中：

```
ALTER FUNCTION add(integer, integer) SET SCHEMA utils;
```

## 兼容性
<a name="alter-function-compatibility"></a>

Aurora DSQL 支持 PostgreSQL `ALTER FUNCTION` 语句的 `RENAME TO`、`OWNER TO` 和 `SET SCHEMA` 形式。不支持 PostgreSQL 中可用的其他形式。