Re: Listar funciones y sus descripciones.

From: Roberto Rodríguez Pino <rodpin(at)gmail(dot)com>
To: Postgres <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Listar funciones y sus descripciones.
Date: 2008-08-07 21:07:50
Message-ID: 1218143270.12721.75.camel@pitufo
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda


El mar, 29-07-2008 a las 17:31 -0400, Alvaro Herrera escribió:
> Roberto Rodríguez Pino escribió:
> > Hola a todos!
> > he ingresado varias funciones a mi base de datos con su respectiva
> > descripción. ¿Existe alguna manera de extraer el listado de estas con
> > sus respectivas descripciones y poder tenerlas en texto editable? He
> > visto que en pgadmin al listar las funciones aparecen con su nombre y
> > descripción, pero no las puedo "sacar" de ahí para llevarlas a un
> > documento.
>
> Hola, ejecuta psql -E y luego \df+
> Con eso tendrás las consultas SQL necesarias que luego puedes refinar.
>
>
Por si le sirve a alguien, de esta manera saque los datos que
necesitaba.
El nombre de la funcion, sus parametros, su retorno, el lenguaje en que
estaban hechas y el comentario que les puse cuando las cree.

Saludos!
Roberto

SELECT
p.proname as "Nombre",
CASE WHEN p.proretset THEN 'setof ' ELSE '' END ||
pg_catalog.format_type(p.prorettype, NULL) as "Tipo de dato de
salida",
CASE WHEN proallargtypes IS NOT NULL THEN
pg_catalog.array_to_string(ARRAY(
SELECT
CASE
WHEN p.proargmodes[s.i] = 'i' THEN ''
WHEN p.proargmodes[s.i] = 'o' THEN 'OUT '
WHEN p.proargmodes[s.i] = 'b' THEN 'INOUT '
END ||
CASE
WHEN COALESCE(p.proargnames[s.i], '') = '' THEN ''
ELSE p.proargnames[s.i] || ' '
END ||
pg_catalog.format_type(p.proallargtypes[s.i], NULL)
FROM
pg_catalog.generate_series(1,
pg_catalog.array_upper(p.proallargtypes, 1)) AS s(i)
), ', ')
ELSE
pg_catalog.array_to_string(ARRAY(
SELECT
CASE
WHEN COALESCE(p.proargnames[s.i+1], '') = '' THEN ''
ELSE p.proargnames[s.i+1] || ' '
END ||
pg_catalog.format_type(p.proargtypes[s.i], NULL)
FROM
pg_catalog.generate_series(0,
pg_catalog.array_upper(p.proargtypes, 1)) AS s(i)
), ', ')
END AS "Tipos de datos de argumentos",
r.rolname as "Dueño",
l.lanname as "Lenguaje",
pg_catalog.obj_description(p.oid, 'pg_proc') as "Descripción"
FROM pg_catalog.pg_proc p
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace
LEFT JOIN pg_catalog.pg_language l ON l.oid = p.prolang
JOIN pg_catalog.pg_roles r ON r.oid = p.proowner
WHERE p.prorettype <> 'pg_catalog.cstring'::pg_catalog.regtype
AND (p.proargtypes[0] IS NULL
OR p.proargtypes[0] <> 'pg_catalog.cstring'::pg_catalog.regtype)
AND NOT p.proisagg
AND pg_catalog.pg_function_is_visible(p.oid)
AND r.rolname = 'elrolquenecesitaba.'
ORDER BY 1, 2, 3, 4;
--
visita mi weblog!
http://trasto.hopto.org/weblog
softwarelibre(at)diinf
http://softwarelibre.diinf.usach.cl

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Francisco Reyes 2008-08-07 21:08:01 Re: ayuda
Previous Message Francisco Reyes 2008-08-07 21:05:30 Re: borrar indices ?