ALTER PROCEDURE — cambiar la definición de un procedimiento
ALTER PROCEDUREname[ ( [ [argmode] [argname]argtype[, ...] ] ) ]action[ ... ] [ RESTRICT ] ALTER PROCEDUREname[ ( [ [argmode] [argname]argtype[, ...] ] ) ] RENAME TOnew_nameALTER PROCEDUREname[ ( [ [argmode] [argname]argtype[, ...] ] ) ] OWNER TO {new_owner| CURRENT_ROLE | CURRENT_USER | SESSION_USER } ALTER PROCEDUREname[ ( [ [argmode] [argname]argtype[, ...] ] ) ] SET SCHEMAnew_schemaALTER PROCEDUREname[ ( [ [argmode] [argname]argtype[, ...] ] ) ] [ NO ] DEPENDS ON EXTENSIONextension_namedondeactiones uno de: [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER SETconfiguration_parameter{ TO | = } {value| DEFAULT } SETconfiguration_parameterFROM CURRENT RESETconfiguration_parameterRESET ALL
ALTER PROCEDURE cambia la definición de un
procedimiento.
Debes ser el propietario del procedimiento para usar ALTER PROCEDURE.
Para cambiar el esquema de un procedimiento, también debes tener el privilegio CREATE
en el nuevo esquema.
Para cambiar el propietario, debes ser capaz de hacer SET ROLE al
nuevo rol propietario, y ese rol debe tener el privilegio CREATE
en el esquema del procedimiento.
(Estas restricciones garantizan que cambiar el propietario no permita hacer
nada que no pudieras hacer eliminando y volviendo a crear el procedimiento.
Sin embargo, un superusuario puede cambiar la propiedad de cualquier procedimiento de todos modos).
nameEl nombre (opcionalmente calificado por esquema) de un procedimiento existente. Si no se especifica una lista de argumentos, el nombre debe ser único en su esquema.
argmode
El modo de un argumento: IN, OUT,
INOUT o VARIADIC. Si se omite,
el valor predeterminado es IN.
argname
El nombre de un argumento.
Ten en cuenta que ALTER PROCEDURE en realidad no presta
atención a los nombres de los argumentos, ya que solo se utilizan los tipos
de datos de los argumentos para determinar la identidad del procedimiento.
argtypeEl o los tipos de datos de los argumentos del procedimiento (opcionalmente calificados por esquema), si los hay. Consulta DROP PROCEDURE para obtener más detalles sobre cómo se busca el procedimiento utilizando el o los tipos de datos de los argumentos.
new_nameEl nuevo nombre del procedimiento.
new_owner
El nuevo propietario del procedimiento. Ten en cuenta que si el procedimiento está
marcado como SECURITY DEFINER, se ejecutará posteriormente como
el nuevo propietario.
new_schemaEl nuevo esquema para el procedimiento.
extension_name
Esta forma marca el procedimiento como dependiente de la extensión, o como ya no
dependiente si se especifica NO. Un procedimiento marcado como
dependiente de una extensión se elimina cuando se elimina la extensión, incluso si
no se especifica cascade. Un procedimiento puede depender de múltiples extensiones y
se eliminará cuando se elimine cualquiera de ellas.
[ EXTERNAL ] SECURITY INVOKER[ EXTERNAL ] SECURITY DEFINER
Cambia si el procedimiento define la seguridad (security definer) o no. La
palabra clave EXTERNAL se ignora para la conformidad con SQL.
Consulta CREATE PROCEDURE para obtener más información sobre
esta capacidad.
configuration_parametervalue
Agrega o cambia la asignación que se realizará a un parámetro de configuración
cuando se llame al procedimiento. Si value es
DEFAULT o, de manera equivalente, se usa RESET,
se elimina la configuración local del procedimiento, de modo que el procedimiento se
ejecute con el valor presente en su entorno. Usa RESET ALL
para borrar todas las configuraciones locales del procedimiento.
SET FROM CURRENT guarda el valor del parámetro que está activo
cuando se ejecuta ALTER PROCEDURE como el valor que se aplicará
al ingresar al procedimiento.
Consulta SET y Chapter 19 para obtener más información sobre los nombres y valores de parámetros permitidos.
RESTRICTIgnorado para la conformidad con el estándar SQL.
Para renombrar el procedimiento insert_data con dos argumentos
de tipo integer a insert_record:
ALTER PROCEDURE insert_data(integer, integer) RENAME TO insert_record;
Para cambiar el propietario del procedimiento insert_data con
two argumentos de tipo integer a joe:
ALTER PROCEDURE insert_data(integer, integer) OWNER TO joe;
Para cambiar el esquema del procedimiento insert_data con
dos argumentos de tipo integer a accounting:
ALTER PROCEDURE insert_data(integer, integer) SET SCHEMA accounting;
Para marcar el procedimiento insert_data(integer, integer) como
dependiente de la extensión myext:
ALTER PROCEDURE insert_data(integer, integer) DEPENDS ON EXTENSION myext;
Para ajustar la ruta de búsqueda (search path) que se establece automáticamente para un procedimiento:
ALTER PROCEDURE check_password(text) SET search_path = admin, pg_temp;
Para desactivar la configuración automática de search_path para un procedimiento:
ALTER PROCEDURE check_password(text) RESET search_path;
El procedimiento ahora se ejecutará con cualquier ruta de búsqueda que use el llamador.
Esta sentencia es parcialmente compatible con la sentencia ALTER
PROCEDURE en el estándar SQL. El estándar permite modificar más
propiedades de un procedimiento, pero no ofrece la capacidad de renombrar un
procedimiento, hacer que un procedimiento defina la seguridad (security definer),
adjuntar valores de parámetros de configuración a un procedimiento, ni cambiar el
propietario, esquema o volatilidad de un procedimiento. El estándar también requiere
la palabra clave RESTRICT, que es opcional en
PostgreSQL.