Ver Mensaje Individual
  #3  
Antiguo 26-03-2010
rolandoj rolandoj is offline
Miembro
 
Registrado: abr 2007
Posts: 395
Reputación: 20
rolandoj Va por buen camino
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.
Responder Con Cita