DROP FUNCTION — remove uma função
DROP FUNCTION [ IF EXISTS ]nome[ ( [ [modo_do_argumento] [nome_do_argumento]tipo_de_dados_do_argumento[, ...] ] ) ] [, ...] [ CASCADE | RESTRICT ]
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.
IF EXISTSNão lança erro se a função não existir. É emitido um aviso neste caso.
nomeO 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_argumentoOs tipos de dados dos argumentos da função (opcionalmente qualificados pelo esquema), se houver.
CASCADERemove 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).
RESTRICTRecusa remover a função se algum objeto depender dela. Este é o comportamento padrão.
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.
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.