ALTER PROCEDURE — Modifier la définition d'une procédure
ALTER PROCEDUREnom
[ ( [ [mode_arg
] [nom_arg
]type_arg
[, ...] ] ) ]action
[ ... ] [ RESTRICT ] ALTER PROCEDUREnom
[ ( [ [mode_arg
] [nom_arg
]type_arg
[, ...] ] ) ] RENAME TOnouveau_nom
ALTER PROCEDUREnom
[ ( [ [mode_arg
] [nom_arg
]type_arg
[, ...] ] ) ] OWNER TO {nouveau_propriétaire
| CURRENT_ROLE | CURRENT_USER | SESSION_USER } ALTER PROCEDUREnom
[ ( [ [mode_arg
] [nom_arg
]type_arg
[, ...] ] ) ] SET SCHEMAnouveau_schéma
ALTER PROCEDUREnom
[ ( [ [mode_arg
] [nom_arg
]type_arg
[, ...] ] ) ] [ NO ] DEPENDS ON EXTENSIONnom_extension
oùaction
fait partie de : [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER SETparamètre_de_configuration
{ TO | = } {valeur
| DEFAULT } SETparamètre_de_configuration
FROM CURRENT RESETparamètre_de_configuration
RESET ALL
ALTER PROCEDURE
modifie la définition d'une procédure.
Seul le propriétaire de la procédure peut utiliser ALTER
PROCEDURE
. Le droit CREATE
sur le nouveau
schéma est requis pour pouvoir changer le schéma de la procédure.
Pour modifier le propriétaire, vous devez être capable d'utiliser
SET ROLE
vers le nouveau rôle propriétaire, et ce rôle
doit avoir le droit CREATE
sur le schéma de la procédure.
Ces restrictions
assurent que la modification du propriétaire n'a pas d'effets autres que ceux
obtenus par la suppression et la re-création de la procédure ;
toutefois, un superutilisateur peut modifier le propriétaire de n'importe
quelle procédure.
nom
Le nom d'une procédure existante (éventuellement qualifié par le schéma). Si aucune liste d'arguments n'est spécifiée, le nom doit être unique dans son schéma.
mode_arg
Le mode d'un argument : IN
,
OUT
, INOUT
ou
VARIADIC
. Si non précisé, le défaut est
IN
.
nom_arg
Le nom d'un argument. Notez que ALTER PROCEDURE
ne
fait pas vraiment attention aux noms des arguments, puisqu'il n'a besoin
que des types des arguments pour déterminer la procédure.
type_arg
Les types de données des arguments de la procédure (éventuellement qualifiés par le schéma), s'il y en a. Voir DROP PROCEDURE pour les détails sur comment la procédure est recherchée en utilisant les types de données des arguments.
nouveau_nom
Le nouveau nom de la procédure.
nouveau_propriétaire
Le nouveau propriétaire de la procédure. Si cette procédure est marquée
SECURITY DEFINER
, elle s'exécute par la suite sous
cette identité.
nouveau_schema
Le nouveau schéma de la procédure.
nom_extension
Cette forme marque la procédure comme dépendante de l'extension, ou comme
indépendante de l'extension si NO
est ajoutée. Une
procédure marquée comme dépendante d'une extension est supprimée quand
l'extension est supprimée même si la cascade n'est pas explicitement
demandée. Une procédure peut dépendre de plusieurs extensions, et ne sera
supprimée que quand une de ces extensions est supprimée.
[ EXTERNAL ] SECURITY INVOKER
[ EXTERNAL ] SECURITY DEFINER
Précise si la procédure doit être appelée avec les droits de l'utilisateur
qui l'a créée. Le mot clé EXTERNAL
, ignoré, existe
pour des raisons de compatibilité SQL. Voir CREATE PROCEDURE pour plus d'informations.
paramètre_de_configuration
valeur
Ajoute ou modifie l'initialisation d'un paramètre de configuration lorsque
la procédure est appelée. Si valeur
est
DEFAULT
ou, de façon équivalente, si
RESET
est utilisé, le paramètre local de la procédure
est supprimé pour que la procédure s'exécute avec la valeur par défaut du
paramètre. Utiliser RESET ALL
supprime toutes les
valeurs spécifiques des paramètres pour cette procédure. SET
FROM CURRENT
sauvegarde la valeur actuelle du paramètre quand
ALTER PROCEDURE
est exécuté comme valeur à appliquer
lors de l'exécution de la procédure.
Voir SET et Chapitre 20 pour plus d'informations sur les noms des paramètres et les valeurs autorisés.
RESTRICT
Ignoré, présent pour des raisons de conformité avec le standard SQL.
Renommer la procédure insert_data
ayant deux arguments de
type integer
vers insert_record
:
ALTER PROCEDURE insert_data(integer, integer) RENAME TO insert_record;
Changer le propriétaire de la procédure insert_data
ayant
deux arguments de type integer
vers
joe
:
ALTER PROCEDURE insert_data(integer, integer) OWNER TO joe;
Changer le schéma de la procédure insert_data
ayant deux
arguments de type integer
par
accounting
:
ALTER PROCEDURE insert_data(integer, integer) SET SCHEMA accounting;
Marquer la procédure insert_data(integer, integer)
comme
dépendante de l'extension myext
:
ALTER PROCEDURE insert_data(integer, integer) DEPENDS ON EXTENSION myext;
Pour ajuster automatiquement le chemin de recherche des schémas pour une procédure :
ALTER PROCEDURE check_password(text) SET search_path = admin, pg_temp;
Pour désactiver le paramètre search_path
d'une
procédure :
ALTER PROCEDURE check_password(text) RESET search_path;
La procédure s'exécutera maintenant avec la valeur de la session pour cette variable.
La compatibilité de cette instruction avec l'instruction ALTER
PROCEDURE
du standard SQL est partielle. Le standard autorise la
modification d'un plus grand nombre de propriétés d'une procédure mais ne
laisse pas la possibilité de renommer une procédure, de placer l'option
SECURITY DEFINER
sur la procédure, d'y attacher des
valeurs de paramètres ou d'en modifier le propriétaire, le schéma ou la
volatilité. Le standard requiert le mot clé
RESTRICT
; il est optionnel avec
PostgreSQL.