Duda tonta con función

10/07/2008 - 11:49 por Cactus | Informe spam
Hola a todos, me estoy rompiendo la cabeza con ésto y nunca me había dado
cuenta del problema hasta ayer.

Defino una función en sql 2000 que devolverá un float. En la función
simplemente divido 10 entre 20, lo cual me debería devolver 0,5, pero no hay
forma... obtengo 0, y he probado de todo y no consigo nada.

El texto de la función:
ALTER FUNCTION dbo.[1]

( )

Returns float

As

Begin

Declare @Resultado float

select @resultado = 10/20


Return @Resultado

END

Si en vez de poner 10/20 pongo 10.00/20.00 me funciona bien, pero esta
solución no me sirve ya que en la función real los datos salen de campos, y
son muchas más operaciones que eso.

Gracias.
 

Leer las respuestas

#1 DarthSidious
10/07/2008 - 13:48 | Informe spam
en los libros online de sql dice que si divides 2 enteros con /, el resultado
sera un entero. Lo unico que se me ocurre es que en la division hagas un
convert a float de los valores que vayas a dividir, algo asi:

select @resultado = convert(float,10)/convert(float,20)

si la linea la pones asi, te va a dar el resultado con los decimales porque
antes de dividir los hace float. Quiza hay una solucion mas facil pero es la
unica que se me ocurre. Si encontras una mejor posteala asi me entero!

salu2!!

"Cactus" wrote:

Hola a todos, me estoy rompiendo la cabeza con ésto y nunca me había dado
cuenta del problema hasta ayer.

Defino una función en sql 2000 que devolverá un float. En la función
simplemente divido 10 entre 20, lo cual me debería devolver 0,5, pero no hay
forma... obtengo 0, y he probado de todo y no consigo nada.

El texto de la función:
ALTER FUNCTION dbo.[1]

( )

Returns float

As

Begin

Declare @Resultado float

select @resultado = 10/20


Return @Resultado

END

Si en vez de poner 10/20 pongo 10.00/20.00 me funciona bien, pero esta
solución no me sirve ya que en la función real los datos salen de campos, y
son muchas más operaciones que eso.

Gracias.





Preguntas similares