Osvaldo Kussama, para a necessidade do momento eu já tinha feito um RTA do
seguinte modo:

 EXECUTE 'SELECT ' || parametro ||'.0' INTO resultado;

quase idêntico à sua sugestão (a sua leva vantagens).
O que eu queria era saber se, por curiosidade, havia algo mais estruturado
já pronto no próprio SGDB
para isso, mas, aparentemente não há devido à minha proposta ser uma
violação de alguma regra no
cálculo interno que é feito quando da utilização de tais parâmetros.

Em 12 de maio de 2012 18:28, Osvaldo Kussama
<[email protected]>escreveu:

> Em 12/05/12, Fabrízio de Royes Mello<[email protected]> escreveu:
> > Em 12 de maio de 2012 18:02, Osvaldo Kussama
> > <[email protected]>escreveu:
> >
> >>
> >> Para este caso em particular (uma operação aritmética) creio que
> >> funcionaria colocar em sua função:
> >> EXECUTE 'SELECT ' || parametro ||'::numeric;' INTO resultado;
> >>
> >>
> > Essa solução não resolve por completo expressões aritméticas.
> >
> > Se a expressão for, por exemplo:
> >
> > 5/2+5
> >
> > O resultado que irá ser apresentado com aquele SELECT dinâmico é:
> >
> > bdteste=# select 5/2+5::numeric;
> >  ?column?
> > ----------
> >         7
> > (1 row)
> >
> > E o resultado correto seria 7,5.
> >
> > Isso porque o PostgreSQL considera como inteiros os valores sem casa
> > decimal (com ponto ".") que não tenha sido definido explicitamente o tipo
> > de dado.
> >
> > Para sua solução funcionar creio que não irá fugir de fazer um pequeno
> > parser na sua expressão aritmética e separar os seus literais e sinais
> para
> > recompor ela com os casts adequados e só assim usar o EXECUTE.
> >
>
>
> Concordo.
> Talvez devesse ter escrito "uma operação aritmética simples" como o
> exemplificado.
> Não sei quais são as reais necessidades do Anselmo, pode ser que esta
> solução simples atenda.
>
> Osvaldo
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>



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

Responder a