Em 9 de março de 2010 10:25, Osvaldo Kussama

> <osvaldo.kuss...@gmail.com> escreveu:

> >> Tente:
> >> EXECUTE 'SELECT quote_literal(' || nome_campo ||') INTO valor_rec';
>   
>
> Ola Osvaldo,
>
> Aquele  "INTO valor_rec" não deveria ser fora das aspas (')? Ou seja,
> deveria fazer parte do EXECUTE e não do SELECT dinâmico. Por exemplo:
>
> EXECUTE 'SELECT quote_literal(' || nome_campo || ') FROM nome_tabela'
> INTO valor_rec;
>



Perfeitamente, na pressa acabei omitindo parte do comando.

Osvaldo


Obrigado Osvaldo e Guedes pelas dicas

Está acontecendo o seguinte:
Se eu fizer assim:


EXECUTE ''select quote_literal( '' || nome_campo || '' ) '' INTO valor_rec;
sendo o valor de nome_campo = 'mov_rec.id_contrato' fica assim...

EXECUTE select ' mov_rec.id_contrato' INTO valor_rec;
aqui eu recebo o seguinte erro:

WARNING:  Error occurred while executing PL/pgSQL function f_gera_fatura
WARNING:  line 550 at execute statement
ERROR: Relation "mov_rec" does not exist


Mas se eu faço assim:
EXECUTE ''select '' || quote_literal(nome_campo ) INTO valor_rec;
fica assim...

EXECUTE select 'mov_rec.id_contrato' INTO valor_rec;
aqui nao recebo erro mas como fazer para ver o valor de valor_rec?

RAISE NOTICE ''valor_rec: (%)'', valor_rec;
retorna  (<NULL>)




_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a