Comment voyez-vous une procédure/fonction stockée?
Disons que j'ai une ancienne fonction sans la définition d'origine - je veux voir ce qu'elle fait en pg/psql mais je n'arrive pas à trouver un moyen de le faire.
en utilisant la version 8.4.1 de Postgres
utilisez pgAdmin ou pg_proc pour obtenir le source de vos procédures stockées. pgAdmin fait la même chose.
\df+ <function_name>
dans psql .
\ef <function_name>
en psql. Cela donnera la fonction entière avec un texte éditable.
SELECT prosrc FROM pg_proc WHERE proname = 'function_name';
Cela indique au gestionnaire de la fonction comment appeler la fonction. Il peut s'agir du code source de la fonction pour les langages interprétés, d'un symbole de lien, d'un nom de fichier ou de tout le reste, en fonction du langage d'implémentation/convention d'appel
Utilisez \df
pour répertorier toutes les procédures stockées dans Postgres.
Si quelqu'un se demande comment interroger rapidement des tables de catalogue et utiliser la fonction pg_get_functiondef()
, 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>'
Normalement, vous utiliseriez une application de gestionnaire de base de données telle que pgAdmin , accédez à l’objet qui vous intéresse et cliquez avec le bouton droit de votre souris pour «scripter comme créer» ou similaire.
Essayez-vous de faire cela ... sans une application de gestion?
Vous pouvez également obtenir phpPgAdmin si vous l’avez configuré dans votre système,
Étape 1: Sélectionnez votre base de données
Étape 2: Cliquez sur le bouton de recherche
É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.