funcionou?

Em Quinta 19 Outubro 2006 13:59, Thiago Risso escreveu:
> Depois do toque do João.... Fiz alguns ajustezinhos :
>
> CREATE OR REPLACE FUNCTION toLowerTablesAndFields()
>   RETURNS text AS
> $BODY$
> DECLARE
>     recTables RECORD;
>     recFields RECORD;
>     lowerTable varchar;
>     lowerField varchar;
>     table varchar;
>     field varchar;
>     schema varchar;
> BEGIN
>     -- SELECIONA AS TABELAS E ESQUEMAS
>     FOR recTables IN SELECT n.nspname,relname FROM pg_catalog.pg_class c
> JOIN
>     pg_catalog.pg_roles r ON r.oid = c.relowner LEFT JOIN
>     pg_catalog.pg_namespace n ON n.oid = c.relnamespace WHERE relkind = 'r'
>     AND n.nspname ='teste' --NOT IN ('pg_catalog', 'pg_toast',
> 'information_schema')
>     LOOP
>         table := recTables.relname;
>         lowerTable := lower(table);
>         schema :=recTables.nspname;
>             EXECUTE 'ALTER TABLE "'||schema||'"."'||table||'" RENAME TO
> "tmp_'||lowerTable||'"' ;
>             EXECUTE 'ALTER TABLE "'||schema||'"."tmp_'||lowerTable||'"
> RENAME TO "'||lowerTable||'"';
>
>             -- SELECIONA OS CAMPOS DA TABELAS
>             FOR recFields IN SELECT a.attname FROM pg_catalog.pg_attribute
> a JOIN pg_catalog.pg_class
>             c on c.oid = a.attrelid WHERE a.attnum > 0 AND NOT
> a.attisdropped AND
>             c.relname = table
>             LOOP
>                 field:=recFields.attname;
>                 lowerField := lower(field);
>                 EXECUTE 'ALTER TABLE "'||schema||'"."'||lowerTable||'"
> RENAME COLUMN "'||field||'" TO "tmp_'||lowerField||'"';
>                 EXECUTE 'ALTER TABLE "'||schema||'"."'||lowerTable||'"
> RENAME COLUMN "tmp_'||lowerField||'" TO "'||lowerField||'"';
>             END LOOP;
>
>
>     END LOOP;
>     RETURN 'Acabou!!';
> END;
> $BODY$
>   LANGUAGE 'plpgsql' VOLATILE;
>
> Att:
> Thiago Risso
_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
Antes de perguntar consulte o manual
http://pgdocptbr.sourceforge.net/

Para editar suas opções ou sair da lista acesse a página da lista em:
http://pgfoundry.org/mailman/listinfo/brasil-usuarios

Responder a