Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/10/2012, 09:29
Avatar de djaevi
djaevi
 
Fecha de Ingreso: marzo-2007
Ubicación: Moreno, Buenos Aires
Mensajes: 400
Antigüedad: 17 años, 1 mes
Puntos: 47
PHP no llama Stored Procedure

Hola a todos tengo un problema bastante molesto con php y mysql y no es la primera vez que me sucede.

Resulta que tengo un stored procedure que realiza unos insert en una tabla mediante un bucle en base a una cadena que le paso. El asunto es que cuando ejecuto el stored procedure desde mysql workbench o otra herramienta propia mysql funciona a las mil maravillas pero cuando lo llamo desde php no realiza absolutamente nada.

Lo curioso es que tengo otros sp en mi base que si funcionan, he comentado practicamente todo el sp y al hacer una consulta sencilla como un select ahi si funciona pero en ocasiones si y en ocasiones no en fin muy extraño. Les dejo el codigo de mi sp pero como dije si lo corro bajo mysql funciona excelente.

Codigo SP:

Código SQL:
Ver original
  1. DELIMITER $$
  2.  
  3. CREATE DEFINER=`root`@`localhost` PROCEDURE `enviarMensaje`(
  4.     p_idUsuario INT,
  5.     p_asunto TEXT,
  6.     p_mensaje TEXT,
  7.     p_idsReceptores VARCHAR (300)
  8. )
  9. BEGIN
  10.  
  11. DECLARE sp_ids INT;
  12. DECLARE EXIT HANDLER FOR SQLSTATE '23000' ROLLBACK TO inicio;
  13. DECLARE EXIT HANDLER FOR SQLEXCEPTION ROLLBACK TO inicio;
  14. DECLARE EXIT HANDLER FOR SQLWARNING ROLLBACK TO inicio;
  15. DECLARE EXIT HANDLER FOR 1062 ROLLBACK TO inicio;
  16.  
  17. START TRANSACTION;
  18.  
  19. SELECT 0;
  20.  
  21. SAVEPOINT inicio;
  22.  
  23.     WHILE instr(p_idsReceptores,'-') != 0 DO
  24.    
  25.         SET sp_ids = SUBSTRING(p_idsReceptores,1,instr(p_idsReceptores,'-')-1);
  26.         SET p_idsReceptores = SUBSTRING(p_idsReceptores,instr(p_idsReceptores,'-')+1,CHAR_LENGTH(p_idsReceptores));
  27.  
  28.         INSERT INTO temp (texto,num)VALUES ("texto",sp_ids);
  29.  
  30.     END WHILE;
  31.    
  32.     SET sp_ids = p_idsReceptores;
  33.    
  34.     INSERT INTO temp (texto,num) VALUES ("texto",sp_ids);
  35.    
  36. COMMIT;
  37.  
  38. SELECT 1;
  39.  
  40. END

Y aqui como lo llamo desde PHP.

Código PHP:
Ver original
  1. $llamada = mysql_query("CALL enviarMensaje(54,'asunto','mensaje','1-2-3-4')");
  2. echo mysql_result($llamada,0,0);

Vale decir que llamo a mis otros sp de la misma manera y ninguno tiene mayores problemas lo unico que tiene este de distinto es que empece a utilizar las excepciones SQL para manejar errores.

Salu2 y gracias de antemano!