Ver Mensaje Individual
  #6 (permalink)  
Antiguo 28/04/2011, 18:58
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: 16 años, 5 meses
Puntos: 2658
Respuesta: problema al llamar funcion en Mysql

Bien, observando un poco mejor tu problema la cosa es simplísima: Estás usando el mismo nombre para el campo de la tabla, que para la variable de entrada... Eso está mal.
El parser de MySQL analiza jerárquicamente las cosas, y como una columna tiene más jerarquía que una variable local, interpreta que el segundo elemento de la comparación es también el campo (MySQL no diferencia entre mayúsculas y minúsculas en el cuerpo de un SF o SP).
En otras palabras, tu consulta le está diciendo a MySQL que devuelva el valor de DES_EMAIL, donde la clave primaria sea igual a sí misma... O sea, te está devolviendo TODA la tabla.

¿Se entiende?

La solución es: Ponle a la variable otro nombre.

Código MySQL:
Ver original
  1. DELIMITER $$
  2. DROP FUNCTION IF EXISTS `ldr`.`fc_getDesEmailContacto`$$
  3. CREATE FUNCTION `ldr`.`fc_getDesEmailContacto` (id_empresa int) RETURNS VARCHAR(100) DETERMINISTIC
  4.     DECLARE salida VARCHAR(100);
  5.     SELECT DES_EMAIL into salida FROM CONTACTO where IDE_EMPRESA = id_empresa;
  6.     RETURN salida;
  7. END $$
  8. DELIMITER ;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)