Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

evitar Redondeo

Estas en el tema de evitar Redondeo en el foro de SQL Server en Foros del Web. Holass....tengo un problema un poco tonto...vereis, necesito incluir una operacion de lo mas sencilla en un procedimiento almacenado. El problema es que no encuentro el ...
  #1 (permalink)  
Antiguo 19/07/2006, 00:15
 
Fecha de Ingreso: junio-2003
Mensajes: 203
Antigüedad: 20 años, 10 meses
Puntos: 0
evitar Redondeo

Holass....tengo un problema un poco tonto...vereis, necesito incluir una operacion de lo mas sencilla en un procedimiento almacenado. El problema es que no encuentro el tipo de variable, con el cual evitar el redondeo....

Os copio el procedimiento con la ultima prueba..... (ya he probado con decimal.....con real......pero no hay manera. ¿que estoy haciendo mal?.

Código PHP:
CREATE PROCEDURE dbo.V_calcular_factor (@factor_reactivo as NUMERIC(5,2), @volumen_valorado as NUMERIC(5,2), @volumen_gastado as NUMERIC(5,2)) AS

declare @
factor_resultante as NUMERIC(5,2)

set @factor_resultante= (@factor_reactivo*@volumen_gastado) /@volumen_valorado

return @factor_resultante
GO 

Muchas Gracias.
Un saludo.
  #2 (permalink)  
Antiguo 19/07/2006, 08:15
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
lo que pasa es que el RETURN de sql solo regresa enteros....intenta mejor regresar el valor en una variable de salida....


Código:
Using RETURN  -- (Referencia: Libros en linea de SQL Server)
The RETURN statement unconditionally terminates a query, stored procedure, or batch. None of the statements in a stored procedure or batch following the RETURN statement are executed.

When used in a stored procedure, the RETURN statement can specify an integer value to return to the calling application, batch, or procedure. If no value is specified on RETURN, a stored procedure returns the value 0.

Most stored procedures follow the convention of using the return code to indicate the success or failure of the stored procedure. The stored procedures return a value of 0 when no errors were encountered. Any nonzero value indicates an error occurred.
Ejemplo:

Código:
CREATE PROCEDURE dbo.V_calcular_factor(
       @factor_reactivo   float 
      ,@volumen_valorado  float
      ,@volumen_gastado   float
      ,@factor_resultante float output) 
AS 

If @volumen_valorado > 0
   Set @factor_resultante = (@factor_reactivo*@volumen_gastado) /@volumen_valorado 
Else
   Set @factor_resultante = 0
GO  

declare @resultante float
Execute dbo.V_calcular_factor 10,8,3, @resultante output
print @resultante
Resultado : 3.75

Última edición por Andres95; 19/07/2006 a las 08:26
  #3 (permalink)  
Antiguo 19/07/2006, 08:26
Avatar de PequeñoMauro  
Fecha de Ingreso: abril-2006
Ubicación: Lima - Perú
Mensajes: 600
Antigüedad: 18 años
Puntos: 3
Hola juan_pele:
Hay una mejor manera de devolver el valor de una variable, y no necesariamente con RETURN. Como te comento Andres, es con variables de salida, es decir al llamar al procedure, tienes parámetros verdad?
Ejemplo proc1(parametro 1,parametro 2); --ejemplo simple

Pero al editar tu procedure, inicias:

Código:
CREATE PROCEDURE nombre(@parametro1 as NUMERIC(5,2) IN, @parametro2 as NUMERIC(5,2) OUT) AS
......
En este caso OUT te indica que este parámetro será un valor de salida, y ese valor podrás usarlo desde el programa, procedure, package o donde llames al procedure.
Seria bueno que revises bien respecto a como devolver valores mediante un procedure, y te va a ayudar muchisimo.
Saludos
__________________
"Nada en mis manos traigo tan solo a tu cruz me aferro....."
  #4 (permalink)  
Antiguo 19/07/2006, 14:30
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Complementando las respuestas que ya te dieron...

El return se suele utilizar unicamente para valores de codigos de error, de ahí que tenga tantas limitaciones. Cualquier salida que sea parte de los datos de tu SP deberías regresarlas mediante las variables de salida.
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #5 (permalink)  
Antiguo 19/07/2006, 23:51
 
Fecha de Ingreso: junio-2003
Mensajes: 203
Antigüedad: 20 años, 10 meses
Puntos: 0
...a mi tmpoco me convencia mucho el return este... ..ya sabia yo, que algo estaba haciendo mal....

Mil Gracias a los tres...

Un saludo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:16.