

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

`ALTER FUNCTION` altera a definição de uma função.

## Sintaxe compatível
<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
```

## Descrição
<a name="alter-function-description"></a>

`ALTER FUNCTION` altera a definição de uma função existente. 

 Você deve possuir a função para usar `ALTER FUNCTION`. Para alterar o esquema de uma função, você também deve ter o privilégio `CREATE` no novo esquema. Para alterar o proprietário, você deve ser membro do novo perfil de propriedade, e esse perfil deve ter o privilégio `CREATE` no esquema da função.

**`RENAME TO`**  
Altera o nome da função.

**`OWNER TO`**  
Altera o proprietário da função para o usuário especificado.

**`SET SCHEMA`**  
Move a função para outro esquema.

## Parâmetros
<a name="alter-function-parameters"></a>

**{{name}}**  
O nome (opcionalmente qualificado pelo esquema) de uma função existente a ser alterada.

**{{argmode}}**  
O modo de um argumento: `IN`, `OUT`, `INOUT` ou `VARIADIC`. Se for omitido, o padrão será `IN`. A função usa somente os argumentos de entrada para identificação, portanto, liste somente os argumentos `IN`, `INOUT` e `VARIADIC`.

**{{argname}}**  
O nome de um argumento.

**{{argtype}}**  
Tipos de dados dos argumentos da função.

**{{new\_name}}**  
O nome para a função.

**{{new\_owner}}**  
O novo proprietário da função.

**{{new\_schema}}**  
O novo esquema para a função.

## Considerações
<a name="alter-function-considerations"></a>

Para alterar outros atributos além dos listados acima, use `CREATE OR REPLACE FUNCTION`. Para obter mais informações, consulte [`CREATE FUNCTION`](create-function-syntax-support.md).

Para adicionar, alterar ou remover um comentário em uma função, use o comando `COMMENT ON FUNCTION` separado.

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

Renomeie a função `add` (que usa dois argumentos `integer`) para `sum_two`:

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

Altere o proprietário da função `add` para o usuário atual:

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

Mova a função `add` para o esquema `utils`:

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

## Compatibilidade
<a name="alter-function-compatibility"></a>

O Aurora DSQL comporta os formulários `RENAME TO`, `OWNER TO` e `SET SCHEMA` da instrução PostgreSQL `ALTER FUNCTION`. Os outros formulários disponíveis no PostgreSQL não são aceitos. 