El jue, 21-05-2009 a las 09:34 -0500, Luis A. Zevallos Cárdenas
escribió:
> gracias por responder pero necesito que me sirva la funcion
> 
> select *  FROM sch_desarrollo.fn_size_tables()
Tu función quedaría así:

REATE OR REPLACE FUNCTION fn_size_tables()
 RETURNS record AS
 $BODY$DECLARE
 reg RECORD;
 BEGIN

--Tamaño de los objetos en megabytes
select MB into reg from (SELECT relname, round(((relpages*8)::double
precision/1024::double precision)::numeric,2) as MB
FROM pg_class 
ORDER BY relpages DESC) as foo;

 return reg;
 END;$BODY$
 LANGUAGE 'plpgsql'
****************************************************************************************************************
 select fn_size_tables() --- CONSULTA

o así,

CREATE OR REPLACE FUNCTION fn_size_tables()
 RETURNS record AS
 $BODY$DECLARE
 reg RECORD;
 BEGIN

--Tamaño de los objetos en megabytes
select relname, MB  into reg from (SELECT relname,
round(((relpages*8)::double precision/1024::double
precision)::numeric,2) as MB
FROM pg_class 
ORDER BY relpages DESC) as foo;

 return reg;
 END;$BODY$
 LANGUAGE 'plpgsql'
****************************************************************************************************************
 select fn_size_tables() --- CONSULTA

"(0.39,pg_proc)"

Pero puede ser que desees implementar otra cosa y no es devolviendo un
record como se logra .... prueba SETOF ... algo

-- 
Saludos,
Gilberto Castillo
Edificio Beijing. Miramar Trade Center. Etecsa.
Miramar, La Haban.Cuba.

--
TIP 9: visita nuestro canal de IRC #postgresql-es en irc.freenode.net

Responder a