Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/05/2014, 05:48
rjulio21
 
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 389
Antigüedad: 13 años, 8 meses
Puntos: 16
Pregunta Problema con handler cursor en Store procedure.

Buenos dias amigos,

Tengo un problema q me tiene verde pues no veo la solución. Tengo un SP que me funciona perfectamente en local, corre y ejecuta todo lo que requiero, pero estoy intentando pasarlo al servidor (desde el phpmyadmin que es lo que me da el cpanl) y me da el siguiente error:

Código MYSQL:
Ver original
  1. #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'limitInicio,limitFin;
  2.  
  3.     DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;' at line 16


Pero corro el script en local y corre lo crea y ejecuta perfectamente.

Dejo el script aqui:

Código MYSQL:
Ver original
  1. DELIMITER $$
  2.  
  3. CREATE PROCEDURE `sp_timeline`(in idUsuario INT,in limitInicio int, in limitFin int)
  4.     DECLARE idAccionUser int(11);
  5.     DECLARE idAccion int(11);
  6.     DECLARE idRegistro int(11);
  7.     DECLARE fechaAccionRealizada timestamp;
  8.     DECLARE descripcionAccion varchar(100);
  9.     DECLARE tablaAccion varchar(100);
  10.     DECLARE campoMedia varchar(60);
  11.     DECLARE campoPrimario varchar(60);
  12.     DECLARE idObjetoMedia int;
  13.     DECLARE objetoMedia varchar(50);
  14.     DECLARE done INT DEFAULT FALSE;
  15.     DECLARE valorContenidoAccion varchar(400);
  16.     DECLARE timeline CURSOR for SELECT id_accion_usuario, id_accion, id_registro, fecha_creacion,   accion, nombre_tabla, campo_primario,campo_media,id_objeto_media, objeto_media
  17.     FROM v_timeline_usuarios where id_usuario=idUsuario order by fecha_creacion desc limit limitInicio,limitFin;
  18.  
  19.  
  20.     DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
  21.    
  22.    
  23.     DROP TEMPORARY TABLE  if exists timeline;
  24.     CREATE TEMPORARY table timeline (
  25.  
  26.     id_accion int,
  27.     contenido_accion varchar(1000),
  28.     accion varchar(100),
  29.     id_objeto_media int(11),
  30.     objeto_media varchar(50),
  31.     fecha_accion timestamp
  32.     );
  33.  
  34.     Open timeline;
  35.         REPEAT
  36.             fetch timeline into
  37.                     idAccionUser,idAccion,idRegistro,fechaAccionRealizada, descripcionAccion,
  38.                     tablaAccion, campoPrimario,campoMedia,idObjetoMedia,objetoMedia;
  39.            
  40.  
  41.            
  42.             set @query = CONCAT("select ", campoMedia ," into @valorContenidoAccion from ", tablaAccion," where ", campoPrimario," = ", idRegistro, ";");
  43.             prepare stm1 from @query;
  44.             EXECUTE stm1;
  45.             deallocate prepare stm1;
  46.  
  47.             INSERT INTO timeline values (idAccionUser,@valorContenidoAccion,descripcionAccion,idObjetoMedia,objetoMedia,fechaAccionRealizada);
  48.        
  49.         UNTIL done END REPEAT;
  50.     CLOSE timeline;
  51.     select * from timeline;
  52.    
Anteriormente tenia la parte del handler asi:
Código MySQL:
Ver original
  1. DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;



Muchas gracias a quien pueda darme una luz.

Gracias.
__________________
Lo imposible es lo posible visto por los ojos de un incapaz.
Si te sirve la respuesta. dale + al karma.
Saludos