|
Muchas Gracias. Funciona; pero ..
Hola Casimiro,
Muchas gracias por la sugerencia.
La probé y efectivamente funciona; pero, hay dos puntos que me preocupan.
1. Sigue la duda de donde está el error, o la deficiencia. Ya que un CAST no debería ser necesario. Lo lógico es convertir automáticamente a la precisión más alta soportada.
2. Me preocupa un poco el tema de la portabilidad. El CAST está incluído en el SQL Standard; así que por ese lado no debería haber problemas. El DECIMAL también está en el standard; pero, la implementación es la que me preocupa, ya que no sé si en otros motores un BCD de 18 dígitos con 2 decimales es implementado con el tipo DECIMAL. Me explico mejor:
El comando, para mis propósitos queda:
SELECT CAST (Sum(UNDOBLE * UNOBCD) AS DECIMAL(18,2)) FROM MITABLA
El caso es que mi estrategia de portabilidad siempre opera con la premisa de que mi programa corre con cualquier motor SQL sin necesidad de hacer cambios en el mismo, tan solo en el script de creación de la Base de Datos; o a lo sumo, en situaciones muy especiales, con algún cambio mínimo al programa.
Si el tipo de dato en el CAST toca cambiarlo, dado que hay muchos queries de ese estilo, enfrentaría un cambio mayor que para mis propósitos es inaceptable.
|