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

Responder a