Bienvenido(a) a Grupo Linuxero del Bajío lunes, mayo 20 2019 @ 09:00 CEST

Focus on PostgreSQL I

  • Autor:
  • Lecturas 1,092
Artículos a veces es necesario conocer que funciones y/o procedimientos almacenados que tienes sobre PostgreSQL. una forma de saberlo es ejecutando la terminal o herramienta canónica para trabajar en linea de comandos con PostgreSQL, una vez en la terminal ejecutamos la siguiente instrucción:

MiBaseDatos=#df public.* (suponiendo que añadiste las funciones bajo el esquema public)

esto arroja los siguientes resultados.......
BlastDB=# df public.*
List of functions
-[ RECORD 1 ]-------+------------------------------------------------------------------------------------------------------------------------------------------------------
Schema                     | public
Name                        | insert_tbl_blastdb
Result data type         | void
Argument data types  | fdb_name character varying, fquery_id character varying, fquery_def character varying, fquery_len integer, fblastdb_details_id integer.........etc
lo cual nos permite conocer que funciones hemos dado de alta en PostgreSQL, ahora para ver el código que escribimos para esa función usamos la siguiente consulta desde la terminal interactiva de PostgreSQL:
BlastDB=# select * FROM pg_proc WHERE proname = 'insert_tbl_blastdb';
los resultados son los siguientes:
proname        | insert_tbl_blastdb
pronamespace   | 2200
proowner       | 10
prolang        | 17062
proisagg       | f
prosecdef      | f
proisstrict    | f
proretset      | f
provolatile    | v
pronargs       | 10
prorettype     | 2278
proargtypes    | 1043 1043 1043 23 23 23 23 23 23 1114
proallargtypes | 
proargmodes    | 
proargnames    | {fdb_name,fquery_id,fquery_def,fquery_len,fblastdb_details_id,fblastdb_parameters_id,fblastdb_iterations_id,fblastdb_info_id,fblastdb_diagram_id,fdb_date}
prosrc         | 
               : BEGIN
               : x09x09
               : x09INSERT INTO tbl_blastdb(db_name,"blastdb_details.id","blastdb_parameters.id","blastdb_iterations.id","blastdb_info.id","blastdb_diagram.id",db_date)
               : x09VALUES(fdb_name,fblastdb_details_id,fblastdb_parameters_id,fblastdb_iterations_id,fblastdb_info_id,fblastdb_diagram_id,fdb_date);
               : x09
               : x09INSERT INTO tbl_blastdb_details(db_name,query_id,query_def,query_len)
               : x09VALUES(fdb_name,fquery_id,fquery_def,fquery_len);
               : x09RETURN;
               : END;
               : 
probin         | -
proacl         | 
y esto es muy interesante porque pueden ver el código de su función, así como los tipos de datos de los parámetros, su código asociado y mas variables importantes. pg_proc es una tabla dentro del namespace pg_catalog que contiene los siguientes campos:
BlastDB=# d pg_catalog.pg_proc
       Table "pg_catalog.pg_proc"
     Column     |   Type    | Modifiers 
----------------+-----------+-----------
 proname        | name      | not null
 pronamespace   | oid       | not null
 proowner       | oid       | not null
 prolang        | oid       | not null
 proisagg       | boolean   | not null
 prosecdef      | boolean   | not null
 proisstrict    | boolean   | not null
 proretset      | boolean   | not null
 provolatile    | "char"    | not null
 pronargs       | smallint  | not null
 prorettype     | oid       | not null
 proargtypes    | oidvector | not null
 proallargtypes | oid[]     | 
 proargmodes    | "char"[]  | 
 proargnames    | text[]    | 
 prosrc         | text      | 
 probin         | bytea     | 
 proacl         | a*censored*em[] | 
Indexes:
    "pg_proc_oid_index" UNIQUE, btree (oid)
    "pg_proc_proname_args_nsp_index" UNIQUE, btree (proname, proargtypes, pronamespace)
por ejemplo el campo proname mantiene el nombre de la función, mientras que el campo prosrc mantiene el codigo fuente de la función..entre varios campos mas. Saludos a todos!!!!!!!!