Réponses:
utilisez pgAdmin ou utilisez pg_proc pour obtenir la source de vos procédures stockées. pgAdmin fait de même.
\df+ <function_name>
dans psql .
\x
méta-commande psql avant d'afficher la définition de la fonction. \x
est également utile pour afficher les résultats de requêtes contenant des enregistrements avec de longues chaînes.
\ef <function_name>
dans psql. Cela donnera toute la fonction avec du texte modifiable.
;
<enter>
après pour exécuter le tampon.
ERROR: more than one function named
SELECT prosrc FROM pg_proc WHERE proname = 'function_name';
Cela indique au gestionnaire de fonction comment appeler la fonction. Il peut s'agir du code source réel de la fonction pour les langages interprétés, d'un symbole de lien, d'un nom de fichier ou à peu près n'importe quoi d'autre, selon le langage d'implémentation / la convention d'appel
psql
. Notez que les noms de fonction semblent être réduits.
SELECT proname, prosrc, proargnames FROM pg_proc WHERE proname like '%func_name%'
. Ceci au moins sur la page 9.6. Vous pouvez obtenir le code numérique du type via la propriété proargtypes
, mais vous devrez vous joindre à une autre table pour obtenir cela sous forme de noms.
Utilisez \df
pour lister toutes les procédures stockées dans Postgres.
Si quelqu'un se demande comment interroger rapidement les tables du catalogue et utiliser la pg_get_functiondef()
fonction, voici l'exemple de requête:
SELECT n.nspname AS schema
,proname AS fname
,proargnames AS args
,t.typname AS return_type
,d.description
,pg_get_functiondef(p.oid) as definition
-- ,CASE WHEN NOT p.proisagg THEN pg_get_functiondef(p.oid)
-- ELSE 'pg_get_functiondef() can''t be used with aggregate functions'
-- END as definition
FROM pg_proc p
JOIN pg_type t
ON p.prorettype = t.oid
LEFT OUTER
JOIN pg_description d
ON p.oid = d.objoid
LEFT OUTER
JOIN pg_namespace n
ON n.oid = p.pronamespace
WHERE NOT p.proisagg
AND n.nspname~'<$SCHEMA_NAME_PATTERN>'
AND proname~'<$FUNCTION_NAME_PATTERN>'
pg_get_functiondef(p.oid) ilike '%indicator_loss%'
Vous pouvez également obtenir par phpPgAdmin si vous le configurez dans votre système,
Étape 1: Sélectionnez votre base de données
Étape 2: Cliquez sur le bouton Rechercher
Étape 3: Modifiez l'option de recherche en fonctions, puis cliquez sur Rechercher.
Vous obtiendrez la liste des fonctions définies. Vous pouvez également rechercher des fonctions par nom, en espérant que cette réponse aidera les autres.
Pour voir le code complet (requête) écrit dans la procédure / les fonctions stockées, utilisez la commande ci-dessous:
sp_helptext procedure/function_name
pour le nom de la fonction et le nom de la procédure, n'ajoutez pas le préfixe «dbo». ou 'sys.'.
n'ajoutez pas de crochets à la fin de la procédure ou du nom de la fonction et ne transmettez pas non plus les paramètres.
utilisez le mot-clé sp_helptext, puis transmettez simplement le nom de la procédure / fonction.
utilisez la commande ci-dessous pour voir le code complet écrit pour la procédure:
sp_helptext ProcedureName
utilisez la commande ci-dessous pour voir le code complet écrit pour la fonction:
sp_helptext FunctionName
sp_helptext
en a pas dans postgresql.
Normalement, vous utiliseriez une application de gestion de base de données comme pgAdmin , accédez à l'objet qui vous intéresse et cliquez avec le bouton droit de la souris sur "script as create" ou similaire.
Essayez-vous de faire cela ... sans application de gestion?