2009/8/31 André Pignata <andrepign...@gmail.com>

>
> CREATE OR REPLACE FUNCTION "migracao"."limpa_tabela" () RETURNS boolean AS
> $body$
> /* New function body */
> declare
>   rmsg record;
>   retorno boolean;
> begin
>      retorno := true;
>      for rmsg in (select distinct pg_tables.tablename as tabela from
>          pg_tables
>          ,pg_class
>         ,pg_namespace
>         where
>              pg_namespace.nspname = 'public'
>              and pg_tables.schemaname = pg_namespace.nspname
>              and pg_class.relname = pg_tables.tablename
>              and pg_class.relnamespace = pg_namespace.oid
>         ) loop
>           BEGIN
>                EXECUTE('delete from '||rmsg.tabela);
>           EXCEPTION
>                    when integrity_constraint_violation then
>                         retorno := false;
>
>           end;
>      end loop;
>     return retorno;
>
> end;
> $body$
> LANGUAGE 'plpgsql' VOLATILE RETURNS NULL ON NULL INPUT SECURITY INVOKER;
>
> <corte>
>
>
André,

Só uma dica, eu recomendo você utilizar o "information_schema" [1] para
obter informações do catálogo, trocando a query...

select distinct pg_tables.tablename as tabela from
         pg_tables
         ,pg_class
        ,pg_namespace
        where
             pg_namespace.nspname = 'public'
             and pg_tables.schemaname = pg_namespace.nspname
             and pg_class.relname = pg_tables.tablename
             and pg_class.relnamespace = pg_namespace.oid

...por simplesmente:

select table_name as tabela
  from information_schema.tables
where table_schema = 'public';



[1] http://www.postgresql.org/docs/current/static/information-schema.html

-- 
Fabrízio de Royes Mello
>> Blog sobre TI: http://fabriziomello.blogspot.com
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a