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