web-dev-qa-db-fra.com

comment afficher le code de procédure stockée complet?

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

90
darren

utilisez pgAdmin ou pg_proc pour obtenir le source de vos procédures stockées. pgAdmin fait la même chose.

21
Frank Heikens

\df+ <function_name> dans psql .

201
Milen A. Radev

\ef <function_name> en psql. Cela donnera la fonction entière avec un texte éditable.

116
Asha Koshti
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

44
Maxim

Utilisez \df pour répertorier toutes les procédures stockées dans Postgres.

9
Puneet Purohit

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>'
6
msciwoj

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?

0
annakata

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.

0
Veeresh Digasangi