Em sex, 26 de ago de 2016 às 17:30, Bruno Felipe <[email protected]>
escreveu:

> Boa tarde pessoal, estou executando uma função que percorre todas as
> tabelas filtrado por uma coluna especifica e depois atualiza a coluna por
> um valor rondando no laço de repetição. porém está dando um erro que não
> consigo identificar....
>
> CREATE OR REPLACE FUNCTION alteraEmpresa () RETURNS void  LANGUAGE
> 'plpgsql' AS $$
> DECLARE
>
> tabela record ;
> BEGIN
> FOR tabela in SELECT table_name  FROM information_schema.columns WHERE
> table_name in (select tablename from pg_tables where schemaname = 'public'
> order by 1)
>        and column_name = 'IdEmpresa'  order by 1
> LOOP
> UPDATE tabela.table_name SET "IdEmpresa" = 1;
> END LOOP;
>
> END;
> $$
>
> SELECT alteraEmpresa();
>
>
> ERRO:  esquema "tabela" não existe
> LINE 1: UPDATE tabela.table_name SET "IdEmpresa" = 1
>                ^
> QUERY:  UPDATE tabela.table_name SET "IdEmpresa" = 1
> CONTEXT:  PL/pgSQL function alteraempresa() line 10 at comando SQL
>
>
>
> como posso resolver?
>
> Você está tentando fazer um update dinâmico, use EXECUTE :
EXECUTE 'UPDATE ' || tabela.table_name || ' SET "idEmpresa" = 1' ;

[]s
Flavio Gurgel
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a