Ver Mensaje Individual
  #2 (permalink)  
Antiguo 04/06/2018, 10:49
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 10 meses
Puntos: 447
Respuesta: Devuelve siempre lo mismo

Hola Dacroma:

Creo que tu error está en los datos de tu tabla, ya que la función trabaja correctamente y aquí la prueba:

Primero, creamos la función

Código MySQL:
Ver original
  1. mysql> delimiter //
  2. mysql> create function saludar() returns INTEGER
  3.     -> begin
  4.     -> declare s INTEGER;
  5.     -> declare b INTEGER;
  6.     -> SET s=(select id_servicio from empresa_servicios where nomb_servicio='lavanderia');
  7.     -> if s!=0 then set b=1;
  8.     -> else set b=0;
  9.     -> end if;
  10.     -> return b;
  11.     -> end //
  12. Query OK, 0 rows affected (0.00 sec)
  13.  
  14. mysql> delimiter ;

Verificamos que no hay nada en la tabla empresa_servicios;

Código MySQL:
Ver original
  1. mysql> SELECT * FROM empresa_servicios where nomb_servicio='lavanderia';
  2. Empty set (0.00 sec)

Si invocamos la función y no existen datos que cumplan la condición, entonces regresa un 0:

Código MySQL:
Ver original
  1. mysql> select saludar();
  2. +-----------+
  3. | saludar() |
  4. +-----------+
  5. |         0 |
  6. +-----------+
  7. 1 row in set (0.02 sec)

Ahora, insertamos un registro a la tabla que cumpla la condición:

Código MySQL:
Ver original
  1. mysql> insert into empresa_servicios values (1, 'lavanderia');
  2. Query OK, 1 row affected (0.06 sec)
  3.  
  4. mysql> SELECT * FROM empresa_servicios where nomb_servicio='lavanderia';
  5. +-------------+---------------+
  6. | id_servicio | nomb_servicio |
  7. +-------------+---------------+
  8. |           1 | lavanderia    |
  9. +-------------+---------------+
  10. 1 row in set (0.00 sec)

ahora, si volvemos a invocar la función, nos regresa un 1:

Código MySQL:
Ver original
  1. mysql> select saludar();
  2. +-----------+
  3. | saludar() |
  4. +-----------+
  5. |         1 |
  6. +-----------+
  7. 1 row in set (0.00 sec)

Ojo, revisa bien cómo tienes tu información almacenada: no es lo mismo lavandería, que lavanderia, que Lavandería, y que LAVANDERIA. En decir, debes de cuidad acentos, mayúsculas y minúsculas e incluso si tienen espacios en blanco o no.

Haz la prueba y nos comentas.

Saludos
Leo.