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
[EMAIL PROTECTED]
http://softwarelibre.diinf.usach.cl

Attachment: signature.asc
Description: Esta parte del mensaje está firmada digitalmente

Responder a