Ver Mensaje Individual
  #2 (permalink)  
Antiguo 17/09/2012, 10:32
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: consulta sql no me retorna valor en sp

Hola javahierro:

En realidad no veo nada malo, pero como no incluiste el código que te trae problemas pues puedo suponer que ahí es justamente donde tienes el detalle...

Checa este script, estoy creando un SP que creo debe ser muy semejante a lo que tú tienes:

Código MySQL:
Ver original
  1. DELIMITER $$
  2. CREATE PROCEDURE `pruebas`.`sp_enum`(idemp INT)    
  3.   DECLARE tipo_plnsuel_tblemp VARCHAR(1);  -- enum ('0', '1', '2');
  4.   SET tipo_plnsuel_tblemp = (SELECT plnsuel
  5.                              FROM empleados WHERE  idempleado = idemp);
  6.   IF tipo_plnsuel_tblemp = '0' THEN
  7.     SELECT 'Regresa un cero';
  8.   ELSE
  9.     IF tipo_plnsuel_tblemp = '1' THEN
  10.       SELECT 'Regresa un uno';
  11.     END IF;        
  12.   END IF;
  13. END$$
  14.  
  15. DELIMITER ;

Primero tendrías que decirnos de qué tipo estás declarando tu variable:

Código:
DECLARE tipo_plnsuel_tblemp VARCHAR(1);  
DECLARE tipo_plnsuel_tblemp ENUM ('0', '1', '2');
......
Ahora checa la implementación:

Código MySQL:
Ver original
  1. mysql> CREATE TABLE empleados(
  2.     ->    idempleado INT UNSIGNED NOT NULL ,
  3.     ->    plnsuel ENUM ('0','1','2'),
  4.     ->    PRIMARY KEY (`idempleado`)
  5.     -> );
  6. Query OK, 0 rows affected (0.53 sec)
  7.  
  8. mysql> INSERT INTO empleados VALUES
  9.     -> (10, '0'), (11, '1'), (12, '2');
  10. Query OK, 3 rows affected (0.06 sec)
  11. Records: 3  Duplicates: 0  Warnings: 0
  12.  
  13. mysql> SELECT * FROM empleados;
  14. +------------+---------+
  15. | idempleado | plnsuel |
  16. +------------+---------+
  17. |         10 | 0       |
  18. |         11 | 1       |
  19. |         12 | 2       |
  20. +------------+---------+
  21. 3 rows in set (0.00 sec)

Observa lo que pasa cuando buscas el idempleado 11 o 12:

Código MySQL:
Ver original
  1. mysql> CALL sp_enum(10);
  2. +-----------------+
  3. | Regresa un cero |
  4. +-----------------+
  5. | Regresa un cero |
  6. +-----------------+
  7. 1 row in set (0.00 sec)
  8.  
  9. mysql> CALL sp_enum(11);
  10. +----------------+
  11. | Regresa un uno |
  12. +----------------+
  13. | Regresa un uno |
  14. +----------------+
  15. 1 row in set (0.00 sec)

Es decir ESTÁ RECUPERANDO CORRECTAMENTE EL VALOR Y ESTÁ REGRESANDO EL MENSAJE QUE ESPECIFICASTE EN EL SP. Observa que en el SP sólo consideré los casos cuando el campo es 0 o 1... observa que pasa cuando busco el idEmp = 12:

Código MySQL:
Ver original
  1. mysql> CALL sp_enum(12);
  2. Query OK, 0 rows affected (0.00 sec)

NO REGRESA NADA, pues no se consideró en ninguno de los IF's.

Postea completo el código de tu SP y con gusto te ayudamos a revisar el error.

Saludos
Leo.