PostgreSQLLa base de données la plus sophistiquée au monde.

42.27. pg_proc

Le catalogue pg_proc stocke les informations sur les fonctions (ou procédures). Voir CREATE FUNCTION et Section 32.3, « Fonctions définies par l'utilisateur » pour plus d'informations.

Cette table contient des données pour les fonctions d'agrégat comme pour les fonctions simples. Si proisagg est vrai, il devrait y avoir une ligne correspondante dans pg_aggregate.

Tableau 42.27. Colonnes de pg_proc

Nom Type Références Description
proname name   Nom de la fonction
pronamespace oid pg_namespace .oid OID de l'espace de noms auquel cette fonction appartient.
proowner oid pg_authid .oid Propriétaire de la fonction.
prolang oid pg_language .oid Langage ou interface d'appel pour cette fonction
proisagg bool   La fonction est une fonction d'agrégat.
prosecdef bool   Si vrai, la fonction définit la sécurité (c'est-à-dire une fonction « setuid »).
proisstrict bool   Si vrai, la fonction retourne NULL si un de ses arguments au moins est NULL. Dans ce cas, la fonction ne sera en fait pas appelée du tout. Les fonctions qui ne sont pas « strictes » doivent être préparées à traiter des paramètres NULL.
proretset bool   Si vrai, la fonction retourne un ensemble (c'est-à-dire des valeurs multiples du type défini).
provolatile char   provolatile indique si le résultat de la fonction dépend uniquement de ses arguments ou s'il est affecté par des facteurs externes. Il vaut i pour les fonctions « immuables », qui donnent toujours le même résultat quand les paramètres entrés sont les mêmes. Il vaut s pour les fonctions « stables », dont le résultat (pour les mêmes paramètres d'entrée) ne change pas tout au long d'un balayage (de table). Il vaut v pour les fonctions « volatiles », dont le résultat peut varier à tout instant. (Utilisez v aussi pour les fonctions qui ont des effets de bord, afin que les appels à ces fonctions ne soient pas optimisés.)
pronargs int2   Nombre d'arguments
prorettype oid pg_type .oid Type de données renvoyé
proargtypes oidvector pg_type .oid Un tableau contenant les types de données des arguments de la fonction. Ceci inclut seulement les arguments en entrée (ceci incluant les arguments INOUT) et représente, du coup, la signature d'appel de la fonction.
proallargtypes oid[] pg_type.oid Un tableau avec les types de données des arguments de la fonction. Ceci inclut tous les arguments (y compris les arguments OUT et INOUT) ; néanmoins, si tous les arguments sont IN, ce champ sera NULL. Notez que l'indice commence à 1 alors que, pour des raisons historiques, proargtypes commence à partir de 0.
proargmodes char[]   Un tableau avec les modes des arguments de la fonction, codés avec i pour les arguments IN, o pour les arguments OUT, b pour les arguments INOUT. Si tous les arguments sont des arguments IN, ce champ sera NULL. Notez que les indices correspondent aux positions de proallargtypes, et non pas de proargtypes.
proargnames text[]   Un tableau avec les noms des arguments de la fonction. Les arguments sans nom sont initialisés à des chaînes vides dans le tableau. Si aucun des arguments a un nom, ce champ sera NULL. Notez que les indices correspondent aux positions de proallargtypes, et non pas de proargtypes.
prosrc text   Ce champ indique au gestionnaire de fonctions la façon d'invoquer la fonction. Il peut s'agir du code source pour un langage interprété, d'un symbole lié, d'un nom de fichier ou de n'importe quoi d'autre, en fonction du langage ou de la convention d'appel.
probin bytea   Information supplémentaire sur la façon d'invoquer la fonction. Encore une fois, l'interprétation dépend du langage.
proacl aclitem[]   Droits d'accès ; voir GRANT et REVOKE pour plus de détails.

Pour les fonctions compilées, intégrées et chargées dynamiquement, prosrc contient le nom de la fonction en langage C (symbol lié). Pour tous les autres types de langages, prosrc contient le code source de la fonction. probin est inutilisé, sauf pour les fonctions en C chargées dynamiquement, pour lesquelles il donne le nom de fichier de la bibliothèque partagée qui contient la fonction.