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

Retorno de una Funcion MySql que no sea NULL

Estas en el tema de Retorno de una Funcion MySql que no sea NULL en el foro de Mysql en Foros del Web. Buenas Tardes: Tendo el siguiente problema: Desarrolle un Store_Function en Mysql el cual me devuelve el saldo de un Usuario, el tema es que cuando ...
  #1 (permalink)  
Antiguo 20/04/2011, 13:22
Usuario no validado
 
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires
Mensajes: 413
Antigüedad: 15 años
Puntos: 3
Retorno de una Funcion MySql que no sea NULL

Buenas Tardes:

Tendo el siguiente problema:
Desarrolle un Store_Function en Mysql el cual me devuelve el saldo de un Usuario, el tema es que cuando no encuentra registros en CuentaCorriente me devuelve Valor NULL aunque le haya puesto por default 0.
Yo necesitaría que el valor que me devuelva en tal caso sea 0

Les paso el codigo de la funcion por si pueden ayudarme:

DELIMITER $$

DROP FUNCTION IF EXISTS `sf_saldo` $$
CREATE DEFINER=`root`@`localhost` FUNCTION `sf_saldo`(u int) RETURNS decimal(12,2)
begin
declare Saldo decimal(12,2) default 0;
set Saldo=0;
select sum( if(signo="+",importe,if(signo="-",importe*-1,0)) ) into Saldo from cuentacorriente left join tipomovimientos using(idtipomovimiento) where idusuario=u;
return(Saldo);
end $$

DELIMITER ;

Muchas Gracias
  #2 (permalink)  
Antiguo 20/04/2011, 14:55
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Retorno de una Funcion MySql que no sea NULL

Código MySQL:
Ver original
  1. DELIMITER $$
  2.  
  3. DROP FUNCTION IF EXISTS `sf_saldo` $$
  4. CREATE FUNCTION `sf_saldo`(u INT) RETURNS DECIMAL(12,2)
  5.   DECLARE Saldo DECIMAL(12,2) DEFAULT 0;
  6.   SET Saldo=0;
  7.   SELECT SUM(IF(signo="+",importe,IF(signo="-",importe*-1,0)) ) INTO Saldo FROM cuentacorriente LEFT JOIN tipomovimientos USING(idtipomovimiento) WHERE idusuario=u;
  8.   RETURN IFNULL(Saldo, 0.0);
  9. END$$
  10.  
  11. DELIMITER ;
Sigo insistiendo en que el modelo de datos que estás usando está mal diseñado. Ni siquiera me contestaste el planteo (http://www.forosdelweb.com/f86/funci...-mysql-905258/)
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 20/04/2011, 15:09
Usuario no validado
 
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires
Mensajes: 413
Antigüedad: 15 años
Puntos: 3
Respuesta: Retorno de una Funcion MySql que no sea NULL

Muchas Gracias gnzsoloyo por tu ayuda, asi me funciono bien.

Con respecto al calculo del saldo o a la visualizacion de movimientos de una cuenta corriente, relacionada con una tabla de tipos de movimientos no me parece que sea tan inconveniente porque al mostrarselo al usuario se puede mostrar como lo requiera el usuario.
Distinto seria en una aplicación de Contabilidad, la cual necesita de muchas operaciones y sumas por columnas.
En una aplicacion de cuentas corrientes o movimientos de stock no me parece tan mal.

Es mi simple opinion, igualmente acepto tu planteo. y Muchisimas Gracias por toda la ayuda que me brindas.
  #4 (permalink)  
Antiguo 20/04/2011, 15:26
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Retorno de una Funcion MySql que no sea NULL

El usuario no tiene por qué decidir sobre los aspectos internos del diseño de la base. Sólo necesita obtener lo que quiere. Es tuya la responsabilidad como DBA establecer cuál es el diseño adecuado para cumplir los requerimientos del cliente.
El problema es que centrarte en los procesos para realizar un diseño pobre no sólo le quita eficiencia, sino que además comprometes la portabilidad, la flexibilidad del sistema y aumentas la dependencia de la base de un sólo proceso, en lugar de plantear un diseño con visión de futuro, que pueda responder a cosas que aún no ven, pero pueden requerirse.
Uno de los consejos que siempre dan los profesores de BB.DD. es que una base de datos no se diseña ni para un proceso, ni para el uso presente, sino para el uso que se les dará más adelante.
Si diseñas para una aplicación, cuando se requieran cambios formales o visuales en esos mismos procesos, tendrás que volver al modelo para rediseñarlo.

Consejo: Haz las cosas bien desde el inicio, los parches y las migraciones son terribles.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 20/04/2011, 16:00
Usuario no validado
 
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires
Mensajes: 413
Antigüedad: 15 años
Puntos: 3
Respuesta: Retorno de una Funcion MySql que no sea NULL

Ok, con repecto al usuario yo me referia a la forma que lo necesitaba visualizar.
y por lo demas es para tenerlo en cuenta.
Muchas Gracias

Etiquetas: funcion, null
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 12:16.