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'

Osvaldo
Eu faço uma consulta com FOR LOOP
                        FOR mov_rec IN 
                                EXECUTE ''SELECT * ''
                                        || '' FROM ''
                                        || contratos_fat_rec.nome_tabela_1
                                        || '' WHERE id_contrato = ''
                                        || contratos_fat_rec.id_contrato
                        LOOP

O problema é que eu preciso pegar os valores retornados cujo nome eu tenho que 
montar dentro de outro loop em um array que contem os nomes dos campos para o 
record 'mov_rec'.

mov_rec + nome_campo_array

Assim:

mov_rec.id_contrato
mov_rec.ticket
mov_rec.veiculo
...

para pegar o valor eu posso usar

select mov_rec.id_contrato into valor;

O problema é que a parte 'id_contrato' vem do loop no array com os nomes, então 
o que eu tinha achado 
no manual era o comando EXECUTE para fazer o comando dinamico.
Por isso eu estou tentando assim:

EXECUTE ''select mov_rec'' || ''.'' || nome_campo_array INTO valor_rec;

mas parece que dentro do EXECUTE nao é reconhecido o 'mov_rec', é a impressao 
que dá...
Talvez tenha outra maneira de pegar os valores mas nao encontrei.

Não sei se me expressei bem, mas obrigado pela atenção, se tiver mais alguma 
dica...



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

Responder a