Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

No logro solucionar este error en funcion concatenado

Estas en el tema de No logro solucionar este error en funcion concatenado en el foro de Mysql en Foros del Web. Hola, Las sgtes lineas de codigo muestra una funcion que me concatena todos los titulos y otra que me valida el acceso de usuarios. @import ...
  #1 (permalink)  
Antiguo 12/02/2014, 14:55
Avatar de elremolino  
Fecha de Ingreso: mayo-2007
Mensajes: 211
Antigüedad: 17 años
Puntos: 2
No logro solucionar este error en funcion concatenado

Hola,

Las sgtes lineas de codigo muestra una funcion que me concatena todos los titulos y otra que me valida el acceso de usuarios.

Código MySQL:
Ver original
  1. DELIMITER ;;
  2. CREATE DEFINER=`root`@`localhost` FUNCTION `fn_avanceFisico_ConcatenadoTitulos`(pIdTitulo int) RETURNS varchar(5000) CHARSET utf8
  3.     DECLARE concatenado varchar(5000);  
  4.     set concatenado='';
  5.     WHILE (ifnull(pIdTitulo,0) <> 0) do    
  6.          SELECT concat_ws('</br> Subtitulo',concatenado,titulo),subtitulo into concatenado,pIdTitulo
  7.          FROM ttitulo
  8.          WHERE idTitulo=pIdTitulo;
  9.     END while;
  10.  
  11.     RETURN concatenado;            
  12.  END ;;

Pero recibo un error en el mysql
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 cat_ws('</br> Subtitulo',concatenado,titulo),subtitulo into concatena' at line 5

Código MySQL:
Ver original
  1. DELIMITER ;;
  2. CREATE DEFINER=`root`@`162.243.143.84` PROCEDURE `pr_acceso_validaruserpass`(pusuario VARCHAR(100),
  3.                                     ppassword VARCHAR(100))
  4.   select t1.idUsuario,
  5.          t1.nombres,
  6.          IFNULL(DATE_FORMAT(t1.fechaCaducidad,'%Y-%m-%d'),'') 'fechaCaducidad',
  7.          t2.idGrupo,
  8.          t2.nombre
  9.     FROM tusuario t1 INNER JOIN tgrupo t2
  10.       ON t1.idGrupo = t2.idGrupo
  11.    WHERE t1.idUsuario = pusuario
  12.      AND t1.pasword = md5(ppassword);  
  13. end ;;
  14. DELIMITER ;

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 'select t1.idUsuario,

Alguna Ayuda?

Última edición por gnzsoloyo; 12/02/2014 a las 16:19
  #2 (permalink)  
Antiguo 12/02/2014, 16:21
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: No logro solucionar este error en funcion concatenado

Por lo pronto, ¿te fijaste en los manuales que cuando se cambia el terminador de sentencia con DELIMITER, no se usan doble puntos y comas, sino $$
Bueno, es precisamente para evitar errores de sintaxis.
Eso para empezar.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 13/02/2014, 11:21
Avatar de elremolino  
Fecha de Ingreso: mayo-2007
Mensajes: 211
Antigüedad: 17 años
Puntos: 2
Respuesta: No logro solucionar este error en funcion concatenado

Gracias por tu mensaje, pero cambiando con $$ igual me manda un error del procedimiento ejecutado, pero tengo otros procedimientos y funciones que estan corriendo normal con los puntos y comas

ERROR 1064 (42000): 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 'select t1.idUsuario,
t1.nombres,
ULL(DATE_FORMAT(t1.fechaCaducidad,'%Y-' at line 3

Un saludo
  #4 (permalink)  
Antiguo 13/02/2014, 11:42
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: No logro solucionar este error en funcion concatenado

Bueno, acabo de probar la creación de ese Sp en una base MySQL y funciona perfectamente así:
Código MySQL:
Ver original
  1. DELIMITER $$
  2. CREATE PROCEDURE `pr_acceso_validaruserpass`
  3. (IN pusuario VARCHAR(100),  IN ppassword VARCHAR(100))
  4.   select t1.idUsuario,
  5.          t1.nombres,
  6.          IFNULL(DATE_FORMAT(t1.fechaCaducidad,'%Y-%m-%d'),'') 'fechaCaducidad',
  7.          t2.idGrupo,
  8.          t2.nombre
  9.     FROM tusuario t1 INNER JOIN tgrupo t2 ON t1.idGrupo = t2.idGrupo
  10.    WHERE t1.idUsuario = pusuario
  11.      AND t1.pasword = md5(ppassword);  
  12. end $$
  13. DELIMITER ;
Si hay errores, entonces, no son producto del script, sino del modo en que lo cargas.
¿Qué usas?
¿Consola?
¿MySQL Workbench?
¿phpMyadmin?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 13/02/2014, 12:18
Avatar de elremolino  
Fecha de Ingreso: mayo-2007
Mensajes: 211
Antigüedad: 17 años
Puntos: 2
Respuesta: No logro solucionar este error en funcion concatenado

Efectivamente, estoy ejecutando este procedimiento usando consola en servidor debian en un VPS con mysql 5.5, lo peor que me corren otros procedimientos y funciones normalmente.
  #6 (permalink)  
Antiguo 13/02/2014, 12:23
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: No logro solucionar este error en funcion concatenado

Sólo se me ocurre que sea un error de tipeo, porque de otro modo el script debería funcionar.
¿No has probado usando algún IDE, como MySQL Workbench? ¿Pudes instalarlo?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 13/02/2014, 12:39
Avatar de elremolino  
Fecha de Ingreso: mayo-2007
Mensajes: 211
Antigüedad: 17 años
Puntos: 2
Respuesta: No logro solucionar este error en funcion concatenado

EN el procedimiento veo que lo quitaste la direccion ip y adicionaste parametros de IN , y corrio perfectamente el procedimiento.

Entonces en la funcion quedaria asi?.

Código MySQL:
Ver original
  1. DELIMITER $$
  2.     CREATE FUNCTION `fn_avanceFisico_ConcatenadoTitulos`(pIdTitulo int) RETURNS varchar(5000) CHARSET utf8
  3.     BEGIN  
  4.         DECLARE concatenado varchar(5000);  
  5.         set concatenado='';
  6.         WHILE (ifnull(pIdTitulo,0) <> 0) do    
  7.              SELECT concat_ws('</br> Subtitulo',concatenado,titulo),subtitulo into concatenado,pIdTitulo
  8.              FROM ttitulo
  9.              WHERE idTitulo=pIdTitulo;
  10.         END while;
  11.      
  12.         RETURN concatenado;            
  13.      END $$,

Si parece que es error de tipeo porque en workbench y otros editores me funciona correctamente ,haber si me lo das una probada de esta funcion porfa!

Última edición por gnzsoloyo; 13/02/2014 a las 12:53

Etiquetas: funcion, join, null, select, solucionar, sql, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:37.