Re: select from (tabla dinamica)

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

In response to

Responses

Browse pgsql-es-ayuda by date

  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