Em 9 de março de 2010 16:08, flavio <[email protected]> escreveu:
>
> 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>)
>


Creio que seu comando esteja incompleto, talvez seja algo do tipo:

EXECUTE
   'SELECT ' || quote_ident(nome_campo) || ' FROM ' ||
quote_ident(sua_tabela) || ' WHERE '  || quote_ident (seu_campo) || '
= ' || quote_literal(valor)
INTO valor_rec;

repare que é
EXECUTE
   'string com o comando a ser executado'
INTO valor_rec;

Veja
http://www.postgresql.org/docs/current/interactive/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN

Caso esteja enfrentando dificuldades com os caracteres delimitadores '
veja 4.1.2.4. Dollar-Quoted String Constants em:
http://www.postgresql.org/docs/current/interactive/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS

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

Responder a