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
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 ? |