Ver Mensaje Individual
  #2 (permalink)  
Antiguo 13/11/2013, 10:31
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: funciones que retorne un valor entero de una consulta

Técnicamente, no hay un error en la consulta ni en la función, pero es mejor hacer cietras cosas:
1) La primera, es asegurarte de incializar las variables, porque de lo contrario valen NULL. Y toda operacion con NULL da... NULL.
2) La otra es asegurarte de que el resultado exista, aún cuando devuelva NULL.
3) Nunca uses el mismo nombre para variables, parámetros que para columnas o tablas. MySQL es jerárquico, e interpretará que te refieres a los objetos de la base, y no a las tablas.
Código MySQL:
Ver original
  1. DELIMITER $$
  2. CREATE  FUNCTION F_CantidadArticuloAjuste(id_articuloF INT) RETURNS INT
  3.     DECLARE cant INT;
  4.     SET cant = 0;
  5.     SET cant = (SELECT sum(cantidad) FROM detalle_ajuste WHERE id_articulo = id_articuloF);
  6.     SET cant = IFNULL(cantidad = 0);
  7.     RETURN cant;
  8. END $$
  9.  
  10. DELIMITER ;

Por otro lado, te recomiendo no usar caracteres o simbolos propios del SQL para usarlos como DELIMITERs, es mejor atenerte al modelo usado en el manual de referncia. Utiliza "$$", que seguro no es usado para nada.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)