Em 10 de março de 2010 09:28, flavio <[email protected]> escreveu: > >> Não está claro o que você deseja. >> Quando você coloca: >> select mov_rec.id_contrato into valor; >> você está fazendo apenas uma atribuição que poderia ser feita >> simplesmente: >> valor := mov_rec.id_contrato; >> >> Aí você fala de um array mas o comando que você apresenta não tem >> nenhum subscrito. Talvez: >> EXECUTE 'SELECT mov_rec.' || nome_campo_array[i] INTO valor_rec; >> supondo que nome_campo_array[i] contenha o nome do campo do qual você >> deseja obter o valor, por ex. id_contrato. É isso? >> >> Osvaldo >> >> > Osvaldo > Eh isso mesmo. > Nao queria colocar todo codigo para nao ficar muito extenso, mas voce > entendeu perfeitamente. > O problema eh que quando eu uso este comando > > EXECUTE 'SELECT mov_rec.' || nome_campo_array[i] INTO valor_rec; > > ele me retorna o erro: > > ERROR: Relation "mov_rec" does not exist > > esquisito nao? > teoricamente deveria funcionar... > Por isso eu tentei assim: > > EXECUTE 'select ' || quote_literal( ' mov_rec.'|| nome_campo_array[i] ) > INTO valor_rec; > > assim nao da erro mas como saber o valor da variavel valor_rec que eh do > tipo RECORD (segundo o manual deve ser RECORD)
Não necessariamente: "The optional target is a record variable, a row variable, or a comma-separated list of simple variables and record/row fields,..." [1]. Neste caso você não está retornando um record e sim um campo simples. Apenas *um* campo do registro mov_rec. > > RAISE NOTICE 'valor_rec: (%)', valor_rec; > > ja da erro na compilacao > > Dai eu tentei assim: > > EXECUTE 'select '|| quote_literal( ' mov_rec.'|| nome_campo_array[i] ) > || ' as valor_campo ' INTO valor_rec; > > e o notice > RAISE NOTICE 'valor_rec: (%)', valor_rec.valor_campo; > > retorna NULL > > Sera que eh problema com as aspas que estou me confundindo ou oque... > Quanto as aspas veja os exemplos do manual. Osvaldo [1] http://www.postgresql.org/docs/current/interactive/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
