Ver Mensaje Individual
  #16 (permalink)  
Antiguo 29/01/2013, 06:29
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: Error en función

Precisamente eso son las stored function. En el argot de informática uno habitualmente usa determinados términos técnicos en inglés, que debes aprender a reconocer y dominar. Es parte del lenguaje técnico.
Una stored function o SF, es una "función almacenada", y que para ser creada se usa habitualmente en todos los DBMS la sentencia de clase DDL que se invoca como "CREATE FUNCTION"...
De igual forma, un stored procedure o "SP" es un "procedimiento almacenado", que se crea con la sentencia DDL "CREATE PROCEDURE".
En cuanto a lo que yo te sugerí no era usar un SP, sino una SF.
Prueba de ello es que el codigo que te postee es este:
Código MySQL:
Ver original
  1. DELIMITER $$
  2. CREATE FUNCTION web.animales(animal VARCHAR(15)) RETURNS TINYINT(1)
  3.     IF (SELECT COUNT(nombre) FROM animales WHERE nombre=animal) > 0  THEN -- Si el animal ya existe en la tabla,
  4.        IF (SELECT sexo FROM animales WHERE nombre=animal) = "macho" THEN -- Comprobar si es macho o hembra
  5.          RETURN 1; -- Si es macho, devolver 1
  6.        ELSE
  7.          RETURN 0; -- Si es hembra, devolver 0
  8.        END IF;
  9.     ELSE -- Si el animal no existe en la tabla,
  10.         INSERT INTO animales(nombre, sexo) VALUES(animal, "macho"); -- Por defecto será siempre macho
  11.         RETURN 2; -- Devolvemos 2
  12.     END IF;
  13. END $$
Usando eso, tu llamada sería simplemente:
Código MySQL:
Ver original
  1. SELECT animales('caballo') animal_id;
Siendo "animal_id" el alias de salida de la consulta.

¿Está más claro así?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)