DROP FUNCTION

DROP FUNCTION — remove uma função

Sinopse

DROP FUNCTION [ IF EXISTS ] nome
              [ ( [ [ modo_do_argumento ]
                    [ nome_do_argumento ]
                      tipo_de_dados_do_argumento
                  [, ...] ]
              ) ]
              [, ...]
              [ CASCADE | RESTRICT ]

Descrição

O comando DROP FUNCTION remove a definição de uma ou mais funções existentes. É necessário ser o dono das funções para poder executar o comando DROP FUNCTION. Os tipos de dados dos argumentos das funções devem ser especificados, porque podem existir várias funções diferentes com o mesmo nome e listas de argumentos diferentes.

Parâmetros

IF EXISTS

Não lança erro se a função não existir. É emitido um aviso neste caso.

nome

O nome (opcionalmente qualificado pelo esquema) da função existente. Se não for especificada nenhuma lista de argumentos, o nome deverá ser único em seu esquema.

modo_do_argumento

O modo do argumento: IN, OUT, INOUT, ou VARIADIC. Se omitido, o padrão é IN. Note que o comando DROP FUNCTION não presta atenção aos argumentos OUT, porque apenas os argumentos de entrada são necessários para determinar a identidade da função. Portanto, basta listar os argumentos IN, INOUT, e VARIADIC.

nome_do_argumento

O nome do argumento. Note que o comando DROP FUNCTION, na verdade, não presta atenção aos nomes dos argumentos, porque apenas os tipos de dados dos argumentos são necessários para determinar a identidade da função.

tipo_de_dados_do_argumento

Os tipos de dados dos argumentos da função (opcionalmente qualificados pelo esquema), se houver.

CASCADE

Remove automaticamente os objetos que dependem da função (como operadores ou gatilhos), e, por sua vez, todos os objetos que dependem desses objetos (veja Acompanhamento de dependência).

RESTRICT

Recusa remover a função se algum objeto depender dela. Este é o comportamento padrão.

Exemplos

Este comando remove a função de raiz quadrada:

DROP FUNCTION sqrt(integer);

Remoção de várias funções em um comando:

DROP FUNCTION sqrt(integer), sqrt(bigint);

Se o nome da função for único em seu esquema, pode ser referido sem uma lista de argumentos:

DROP FUNCTION update_employee_salaries;

Note que isto é diferente de

DROP FUNCTION update_employee_salaries();

que se refere a uma função com zero argumentos, enquanto a primeira variante pode se referir a uma função com qualquer número de argumentos, incluindo zero, desde que o nome seja único.

Conformidade

Este comando está em conformidade com o padrão SQL, com as seguintes extensões do PostgreSQL:

  • O padrão permite a remoção de apenas uma função por comando.

  • A cláusula IF EXISTS.

  • A capacidade de especificar modos e nomes dos argumentos.

Veja também

CREATE FUNCTION, ALTER FUNCTION, DROP PROCEDURE, DROP ROUTINE