From: | Jaime Casanova <systemguards(at)gmail(dot)com> |
---|---|
To: | J(dot) Arturo Llanquihuén M(dot) <arturo(at)llanquihuen(dot)cl> |
Cc: | Lucas Hernandez <lucashdz(at)gmail(dot)com>, Ayuda Postgres <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: select from (tabla dinamica) |
Date: | 2005-06-20 18:47:40 |
Message-ID: | c2d9e70e05062011472ef00ef9@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
> yo dejaria la funcion mas o menos asi, no la probe pero es la idea, comente
>
de hecho tampoco funciona, unos pequeños cambios...
> las lineas que deberias cambiar y abajo puse como deberian ir.
> espero te sirva saludos.
>
CREATE OR REPLACE FUNCTION test(nombres char)
-- RETURNS int4 AS
-- RETURN SETOF int4 AS -- vas a devolver un conjunto de registros
-- por lo tanto usas SETOF
-- Cierto que quieres usar SETOF, pero si solo sacas una lista de
enteros de que
-- vale? IMHO, yo sacaria en un RECORD para ver nombre_tabla, numero_registros
RETURNS SETOF RECORD AS
$$
declare
row record;
-- cuenta int4; -- necesitas guardar el valor de tu select count(*)
en una variable
cuenta record; -- va a ser una variable de tipo RECORD
-- ademas segun yo lo veo se va a necesitar un cursor
cur1 refcursor;
begin
-- for row in select * from pg_tables where tablename like '$nombres'
-- Yo pense que iba a tener que construir el select en una cadena, pero esto
-- funciono
for row in select * from pg_tables where tablename like nombres
loop
-- select count(*) from row.tablename;
-- select into cuenta count(*) from row.tablename; -- aqui guardas en
-- tu variable cuenta el valor
-- de count(*)
-- Esto si que no lo puedes hacer, no puedes poner en el from una variable asi
-- Mas bien hazlo con un cursor
open cur1 for execute 'select ' || quote_literal(row.tablename)
|| '::text,
count(*) from ' || row.tablename;
fetch cur1 into cuenta;
close cur1;
return next cuenta; -- aqui retornas el valor al conjunto de datos
end loop;
return;
end;
$$
LANGUAGE 'plpgsql' VOLATILE;
--
Atentamente,
Jaime Casanova
(DBA: DataBase Aniquilator ;)
From | Date | Subject | |
---|---|---|---|
Next Message | Juan Pablo Yañez | 2005-06-20 18:59:28 | Re: Reorganizar tablas |
Previous Message | Alvaro Herrera | 2005-06-20 18:27:50 | Re: Grupos en un DataReport |