Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/08/2015, 15:36
mblascog
 
Fecha de Ingreso: enero-2002
Ubicación: Sabadell
Mensajes: 565
Antigüedad: 22 años, 3 meses
Puntos: 4
Stored procedure devuelve null

Buenas,
He creado el siguiente stored procedure. Al ejecutarlo devuelve null y no debería.
He comprobado la sentencia mysql que contiene @query y devuelve el valor correcto Para comprobarlo he añadido un parámetro string de salida y he grabado @query.
Si no almaceno el resultado en el parámetro de salida, funciona correctamente también, pero luego no sé cómo recuperar dicho valor desde php, es decir:

Código MySQL:
Ver original
  1. SET @query = "SELECT COUNT(*) FROM t_un, t_familia WHERE t_un.familia = t_familia.id_familia AND (t_un.familia = '3' OR t_un.familia = '4')";
Gracias.


Código MySQL:
Ver original
  1. CREATE DEFINER=`root`@`localhost` PROCEDURE `totalPisosCases`(OUT `regs` INT, IN `op` INT, IN `ob` INT)
  2.     SET @query = "SELECT COUNT(*) INTO regs FROM t_un, t_familia WHERE t_un.familia = t_familia.id_familia AND (t_un.familia = '3' OR t_un.familia = '4')";
  3.     IF op = 1 THEN
  4.         SET @query = CONCAT(@query, " AND t_un.operacion = '4'");      
  5.     END IF;
  6.     IF op = 2 THEN
  7.         SET @query = CONCAT(@query, " AND t_un.operacion = '3'");
  8.     END IF;
  9.     IF ob = 1 THEN
  10.         SET @query = CONCAT(@query, " AND (t_un.referencia < '7000' OR t_un.referencia > '9999')");
  11.     END IF;
  12.     IF ob = 2 THEN
  13.         SET @query = CONCAT(@query, " AND t_un.referencia >= '7000' AND t_un.referencia <= '9999'");
  14.     END IF;
  15.    
  16.     PREPARE stmt FROM @query;
  17.     EXECUTE stmt;
  18.     DEALLOCATE PREPARE stmt;
__________________
Qué fácil cuando lo sabes y qué difícil cuando no

Última edición por mblascog; 10/08/2015 a las 01:42