From: | J(dot) Arturo Llanquihuén M(dot) <arturo(at)llanquihuen(dot)cl> |
---|---|
To: | "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 15:14:42 |
Message-ID: | 006101c575aa$c92f7d70$c90000c0@movilmaster.server |
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
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
$BODY$
declare
row record;
cuenta int4; -- necesitas guardar el valor de tu select count(*) en una
variable
begin
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(*)
return next cuenta; -- aqui retornas el valor al conjunto de
datos
end loop;
-- return 1;
return;
end;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
----- Original Message -----
From: "Lucas Hernandez" <lucashdz(at)gmail(dot)com>
To: "Ayuda Postgres" <pgsql-es-ayuda(at)postgresql(dot)org>
Sent: Wednesday, June 15, 2005 8:53 AM
Subject: [pgsql-es-ayuda] select from (tabla dinamica)
> Hace dias traté de exponer lo siguiente y me parece no supe explicarme..
>
> quiero seleccionar todos los nombres de las tablas de pg_tables que tienen
> como parte eval..
> eso lo hago fácilmente con el siguiente query
>
> select tablename from pg_tables where tablename like 'eval%'
> Resultado
> "evaluation"
> "evaluationentidad"
> "evaluationmodel"
> "evaluationmodelevallist"
> "evaluatorlist"
> "evaluatorfunctions"
>
> Mi pregunta es..
> Como puedo obtener la cantidad de records que tiene cada tabla sin
> necesidad de hacer un query por cada tabla?
> select count(*) from tbevaluationentity .... es decir poner el nombre de
> las tablas en una variable... y despues hacer un loop algo como --
> select count(*) from $tablename
>
> He creado una funcion que hace un loop.. no me presenta ningun error pero
> necesito ver los resultados ya que la funcion simplemente returna un 1
>
> CREATE OR REPLACE FUNCTION test(nombres char)
> RETURNS int4 AS
> $BODY$
> declare
> row record;
> begin
> for row in select * from pg_tables where tablename like '$nombres'
> loop
> select count(*) from row.tablename;
> end loop;
> return 1;
> end;
> $BODY$
> LANGUAGE 'plpgsql' VOLATILE;
>
> Agradezco su contribucion.. y, acepto regaños..
>
> Lucas
>
>
> ---------------------------(fin del mensaje)---------------------------
> TIP 8: explain analyze es tu amigo
From | Date | Subject | |
---|---|---|---|
Next Message | Ivan Figueroa | 2005-06-20 15:21:18 | Re: Indices |
Previous Message | David Ortiz | 2005-06-20 14:37:03 | Indices |