ALTER PROCEDURE — modifica a definição de um procedimento
ALTER PROCEDUREnome[ ( [ [modo_do_argumento] [nome_do_argumento]tipo_de_dados_do_argumento[, ...] ] ) ]ação[ ... ] [ RESTRICT ] ALTER PROCEDUREnome[ ( [ [modo_do_argumento] [nome_do_argumento]tipo_de_dados_do_argumento[, ...] ] ) ] RENAME TOnovo_nomeALTER PROCEDUREnome[ ( [ [modo_do_argumento] [nome_do_argumento]tipo_de_dados_do_argumento[, ...] ] ) ] OWNER TO {novo_dono| CURRENT_ROLE | CURRENT_USER | SESSION_USER } ALTER PROCEDUREnome[ ( [ [modo_do_argumento] [nome_do_argumento]tipo_de_dados_do_argumento[, ...] ] ) ] SET SCHEMAnovo_esquemaALTER PROCEDUREnome[ ( [ [modo_do_argumento] [nome_do_argumento]tipo_de_dados_do_argumento[, ...] ] ) ] [ NO ] DEPENDS ON EXTENSIONnome_da_extensãoondeaçãoé uma entre: [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER SETparâmetro_de_configuração{ TO | = } {valor| DEFAULT } SETparâmetro_de_configuraçãoFROM CURRENT RESETparâmetro_de_configuraçãoRESET ALL
O comando ALTER PROCEDURE modifica a definição
de um procedimento
É necessário ser o dono do procedimento para poder executar o comando
ALTER FUNCTION.
Para alterar o esquema do procedimento, também é necessário possuir o
privilégio CREATE no novo esquema.
Para alterar o dono, é necessário ser capaz de executar o comando
SET ROLE para a função de banco de dados
(role) que será a nova dona,
e esta função de banco de dados precisa possuir o privilégio
CREATE no esquema do procedimento.
(Estas restrições impõem que alterar o dono não faz nada que
não poderia ser feito excluindo e recriando o procedimento.
Entretanto, um superusuário pode alterar o dono de qualquer
procedimento.)
nomeO nome (opcionalmente qualificado pelo esquema) do procedimento 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.
nome_do_argumento
O nome do argumento.
Note que o comando ALTER PROCEDURE,
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 do procedimento.
tipo_de_dados_do_argumentoOs tipos de dados dos argumentos do procedimento (opcionalmente qualificados pelo esquema), se houver. Veja DROP PROCEDURE para obter os detalhes de como o procedimento é procurado usando o(s) tipo(s) de dados do argumento.
novo_nomeO novo nome do procedimento.
novo_dono
O novo dono do procedimento.
Note que se o procedimento estiver marcado como
SECURITY DEFINER, ele será executado
subsequentemente com o novo dono.
novo_esquemaO novo esquema para o procedimento.
nome_da_extensão
Esta forma marca o procedimento como dependente da extensão,
ou não mais dependente dessa extensão se for especificado
NO.
Um procedimento marcado como dependente de uma extensão é removido
quando a extensão é removida, mesmo que não seja especificado
CASCADE.
Um procedimento pode ser dependente de várias extensões, sendo
removido quando qualquer uma dessas extensões for removida.
[ EXTERNAL ] SECURITY INVOKER[ EXTERNAL ] SECURITY DEFINER
Altera se o procedimento é SECURITY DEFINER,
ou não.
A palavra-chave EXTERNAL é permitida para
manter a conformidade com o padrão SQL.
Veja CREATE PROCEDURE para obter mais
informações sobre este recurso.
parâmetro_de_configuraçãovalor
Adiciona ou altera a atribuição a ser feita a um parâmetro de
configuração quando o procedimento for chamado.
Se valor for DEFAULT
ou, de forma equivalente, for usado RESET,
a configuração local do procedimento é removida, para que
o procedimento seja executado com o valor presente no ambiente.
Deve ser usado RESET ALL para limpar todas
as definições locais do procedimento.
A cláusula SET FROM CURRENT salva o valor
corrente do parâmetro quando ALTER PROCEDURE
é executado como o valor a ser aplicado quando o procedimento
é chamado.
Veja SET e Configuração do servidor para obter mais informações sobre nomes e valores de parâmetros permitidos.
RESTRICTIgnorado, só para manter a compatibilidade com o padrão.
Para alterar o nome do procedimento insert_data
com dois argumentos do tipo de dados integer para
insert_record:
ALTER PROCEDURE insert_data(integer, integer)
RENAME TO insert_record;
Para alterar o dono do procedimento insert_data
com dois argumentos do tipo de dados integer para
joe:
ALTER PROCEDURE insert_data(integer, integer)
OWNER TO joe;
Para alterar o esquema do procedimento insert_data
com dois argumentos do tipo de dados integer para
accounting:
ALTER PROCEDURE insert_data(integer, integer)
SET SCHEMA accounting;
Para marcar o procedimento
insert_data(integer, integer)
como sendo dependente da extensão myext:
ALTER PROCEDURE insert_data(integer, integer)
DEPENDS ON EXTENSION myext;
Para ajustar o caminho de procura definido automaticamente para um procedimento:
ALTER PROCEDURE check_password(text)
SET search_path = admin, pg_temp;
Para desativar a definição automática de search_path
para um procedimento:
ALTER PROCEDURE check_password(text)
RESET search_path;
O procedimento agora será executado com qualquer caminho de procura usado por seu chamador.
Este comando é parcialmente compatível com a comando
ALTER PROCEDURE do padrão SQL.
O padrão permite que sejam alteradas mais propriedades de um
procedimento, mas não fornece a capacidade de alterar o nome do
procedimento, tornar o procedimento SECURITY DEFINER,
anexar valores de parâmetro de configuração a um procedimento,
ou alterar o dono, esquema ou volatilidade de um procedimento.
O padrão também requer a palavra-chave RESTRICT,
opcional no PostgreSQL.