web-dev-qa-db-fra.com

Comment afficher la fonction, la procédure, les déclencheurs du code source dans postgresql?

Comment imprimer des fonctions et déclencher du code source dans postgresql? s'il vous plaît laissez-moi savoir si quelqu'un connait la requête pour afficher la fonction, déclenche le code source.

138
ganesh

\df+ in sql vous donne le code source.

130
Mateusz Grotek

pour fonction:

vous pouvez interroger la vue pg_proc, tout comme la suivante

select proname,prosrc from pg_proc where proname= your_function_name; 

Une autre solution consiste à exécuter simplement les commandes \df et \ef, qui peuvent répertorier les fonctions.

skytf=> \df           
                                             List of functions
 Schema |         Name         | Result data type |              Argument data types               |  Type  
--------+----------------------+------------------+------------------------------------------------+--------
 public | pg_buffercache_pages | SETOF record     |                                                | normal


skytf=> \ef  pg_buffercache_pages

Il montrera le code source de la fonction.

Pour les déclencheurs:

Je ne sais pas s'il existe un moyen direct d'obtenir le code source. Il suffit de savoir de la manière suivante, peut-être que cela vous aidera!

  • étape 1: Obtenez la table oid du déclencheur:
 skytf => sélectionnez le tgrelid à partir de pg_trigger où tgname = 'insert_tbl_tmp_trigger'; 
 tgrelid 
 --------- 
 26599 
 (1 rangée) 
  • étape 2: Obtenez le nom de la table de l'oid ci-dessus!
 skytf => sélectionnez oid, nom de référence dans pg_class où oid = 26599; 
 oid | relname 
 ------- + ----------------------------- 
 26599 | tbl_tmp 
 (1 rangée) 
  • étape 3: lister les informations de la table
 skytf =>\d tbl_tmp 

Il vous montrera les détails du déclencheur de la table. Généralement, un déclencheur utilise une fonction. Ainsi, vous pouvez obtenir le code source de la fonction de déclenchement comme ci-dessus que j'ai indiqué!

119
francs

Voici quelques exemples de PostgreSQL-9.5

Afficher la liste:

  1. Fonctions: \df+
  2. Déclencheurs: \dy+

Définition d'affichage:

postgres=# \sf
function name is required

postgres=# \sf pg_reload_conf()
CREATE OR REPLACE FUNCTION pg_catalog.pg_reload_conf()
 RETURNS boolean
 LANGUAGE internal
 STRICT
AS $function$pg_reload_conf$function$

postgres=# \sf pg_encoding_to_char
CREATE OR REPLACE FUNCTION pg_catalog.pg_encoding_to_char(integer)
 RETURNS name
 LANGUAGE internal
 STABLE STRICT
AS $function$PG_encoding_to_char$function$
27
Sathish

Il y a beaucoup de possibilités. Le moyen le plus simple consiste simplement à utiliser pgAdmin et à l'obtenir à partir de la fenêtre SQL. Toutefois, si vous souhaitez obtenir cela par programme, examinez pg_proc et pg_trigger catalogues système ou routines et triggers vues du schéma d’information (c’est la méthode standard de SQL, mais elle ne couvre pas nécessairement toutes les fonctionnalités, en particulier celles spécifiques à PostgreSQL). Par exemple:

_SELECT
    routine_definition 
FROM
    information_schema.routines 
WHERE
    specific_schema LIKE 'public'
    AND routine_name LIKE 'functionName';
_
20

Un peu plus que l’affichage de la fonction, qu’en est-il de l’utilisation de la fonction de modification sur place?.

\ef <function_name> est très pratique. Cela ouvrira le code source de la fonction dans un format éditable. Vous ne pourrez pas seulement le voir, vous pourrez aussi le modifier et l'exécuter.

Juste \ef sans nom_fonction ouvrira le modèle CREATE FUNCTION éditable.

Pour référence ultérieure -> https://www.postgresql.org/docs/9.6/static/app-psql.html

10
mythicalcoder

en plus de la réponse de @ franc, vous pouvez utiliser ceci à partir de l'interface SQL:

select 
    prosrc
from pg_trigger, pg_proc
where
 pg_proc.oid=pg_trigger.tgfoid
 and pg_trigger.tgname like '<name>'

(extrait de cet emplacement: http://www.postgresql.org/message-id/Pine.BSF.4.10.10009140858080.28013-100000@megazone23.bigpanda.com )

8
Andreas Dietrich

\sf nom_fonction dans psql donne le code source modifiable d'une fonction unique.

De https://www.postgresql.org/docs/9.6/static/app-psql.html :

\ sf [+] function_description Cette commande extrait et affiche la définition de la fonction nommée, sous la forme d'une commande CREATE OR REPLACE FUNCTION.

Si + est ajouté au nom de la commande, les lignes de sortie sont numérotées, la première ligne du corps de la fonction étant la ligne 1.

6
Sergey Tarasov