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
