> -----Mensaje original-----
> De: Julio Cesar Rodriguez Dominguez
> Enviado el: Lunes, 24 de Agosto de 2009 15:37
> Para: Iván Caballero Cano
> CC: pgsql-es-ayuda@postgresql.org
> Asunto: [pgsql-es-ayuda] Re: [pgsql-es-ayuda] ¿Existe alguna 
> función para verificar si existe una tabla en la BD PostGreSQL?
> 
> 
> 
> El 24 de agosto de 2009 13:31, Iván Caballero Cano 
> <ivanhalen77postgre...@gmail.com> escribió:
> 
> 
>       Buenos Días:
>       ¿Existe alguna función para verificar si existe una 
> tabla en la BD PostGreSQL?
>       
>       Gracias.
>       --
>       TIP 5: ¿Has leído nuestro extenso FAQ?
>               http://www.postgresql.org/docs/faqs.FAQ.html
>       
> 
> 
> 
> puedes crearla tu, manejando esta posible excepción, 
> comparando el código de error que genera postgresql 42P01 
> [UNDEFINED TABLE] 
> http://www.postgresql.org/docs/8.4/static/errcodes-appendix.html 
> 

Me parece es mejor resolverlo consultándo pg_tables. 
Va un ejemplo rudimentario de como sería la función que necesitas:

create or replace function existetabla(ptabla text, pschema text) 
returns boolean as
$BODY$
declare
  res boolean;
begin
  select true into res
    from pg_tables where schemaname = coalesce(pschema, 'public') and
tablename = ptabla;

  return coalesce(res, false);
end;
$BODY$
  LANGUAGE 'plpgsql' immutable;


uso:
pg> select existetabla('mitabla', 'miesquema');
t


Saludos.

--
TIP 10: no uses HTML en tu pregunta, seguro que quien responda no podrá leerlo

Responder a