Skip site navigation (1) Skip section navigation (2)

Re: select from (tabla dinamica)

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 (view raw or flat)
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 ;)

In response to

pgsql-es-ayuda by date

Next:From: Juan Pablo YañezDate: 2005-06-20 18:59:28
Subject: Re: Reorganizar tablas
Previous:From: Alvaro HerreraDate: 2005-06-20 18:27:50
Subject: Re: Grupos en un DataReport

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group