Fecha y hora actual: Viernes 06 Dic 2019 22:13
Índice del Foro

Foros de programación informática, diseño gráfico y Web

En esta comunidad intentaremos dar soporte de programación a todos los niveles, desde principiantes a profesionales de la informática, desarrollo de programas, programación web y mucho más.

PREPARE dentro de procedimiento almacenado

Responder al Tema

Índice del Foro > MySql > PREPARE dentro de procedimiento almacenado

Autor Mensaje
RompePC
Usuario Activo


Registrado: 04 Mar 2013
Mensajes: 227

Mensaje Publicado: Martes 05 Ago 2014 14:45

Título del mensaje: PREPARE dentro de procedimiento almacenado

Responder citando

Llevo dos días intentando hacer el equivalente a EXECUTE (SQL) en MySQL, que consiste en un PREPARE, seguido de un EXECUTE, seguido de un DEALLOCATE PREPARE (por lo que he encontrado).
No obstante, siempre me da fallo en el conjunto de líneas anterior (concretamente en PREPARE diría yo, error 1064), no importa lo que haga. Os dejo el código a ver si algún iluminado puede ayudarme (para qué mentirnos, seguramente llegue Pico con su infinita sabiduría a ayudarme Risa tonta ), porque es lo más rebuscado que he encontrado y que a alguna gente le funciona.
Código:

BEGIN
   DECLARE consulta VARCHAR(255) DEFAULT 'SELECT A.id, A.nombre, A.apellido1, A.apellido2
                           FROM alumno A
                           INNER JOIN grupo G ON A.grupo_id = G.id';
   DECLARE filtros VARCHAR(255);

   IF argApellido1 IS NOT NULL THEN
      SET filtros = CONCAT('A.apellido1 LIKE CONCAT(', argApellido1, "'%')");
   END IF;

   IF filtros IS NOT NULL THEN
      SET consulta = CONCAT(consulta, ' WHERE ');
   END IF;

   SET @sentencia = CONCAT(consulta, filtros, ';');

   PREPARE sql FROM @sentencia;
   EXECUTE sql;
   DEALLOCATE PREPARE sql;
END;

Volver arriba
Ver perfil del usuario Enviar mensaje privado
Pico
Usuario Activo


Registrado: 25 Jun 2013
Mensajes: 628

Mensaje Publicado: Martes 05 Ago 2014 15:30

Título del mensaje: PREPARE dentro de procedimiento almacenado

Responder citando

Si llegar yo, llego, pero no sé ande me he dejado la infinita sabiduría.

Yo no acabo de ver clara la línea
Código:
SET filtros = CONCAT('A.apellido1 LIKE CONCAT(', argApellido1, "'%')");


Para mí que sobran comillas o hay que cambiar comillas por corchetes.

Volver arriba
Ver perfil del usuario Enviar mensaje privado
RompePC
Usuario Activo


Registrado: 04 Mar 2013
Mensajes: 227

Mensaje Publicado: Martes 05 Ago 2014 15:46

Título del mensaje: PREPARE dentro de procedimiento almacenado

Responder citando

Eso sólo añade una claúsula WHERE. Pero el problema no es ese, sino que PREPARE no funciona; he intentado hacer un simple PREPARE sql FROM 'SELECT * FROM alumno;'; y MySQL me devuelve error de sintaxis. El comando en sí falla, escriba lo que escriba y cómo lo escriba. Supongo que intentaré preguntarles a los de MySQL a ver qué dicen, porque para la 5.5 la sintaxis es la que tengo escrita...
Concretamente el fallo es:
Cita:
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 'sql FROM "SELECT * FROM alumno" ' at line 1

Pero es que otra forma de escribir el comando no hay.

Volver arriba
Ver perfil del usuario Enviar mensaje privado
RompePC
Usuario Activo


Registrado: 04 Mar 2013
Mensajes: 227

Mensaje Publicado: Martes 05 Ago 2014 16:50

Título del mensaje: PREPARE dentro de procedimiento almacenado

Responder citando

Lo he arreglado; parece que sql será una palabra reservada o algo... aunque me extraña, porque también he puesto probando y fallaba... no sé, cosas raras las que me pasan sólo a mí.

Volver arriba
Ver perfil del usuario Enviar mensaje privado
niko4142



Registrado: 20 Mar 2019
Mensajes: 1

Mensaje Publicado: Miércoles 20 Mar 2019 21:57

Título del mensaje: PREPARE dentro de procedimiento almacenado

Responder citando

RompePC escribió:
Lo he arreglado; parece que sql será una palabra reservada o algo... aunque me extraña, porque también he puesto probando y fallaba... no sé, cosas raras las que me pasan sólo a mí.


Quisiera saber como lo arreglo, ya que esto en la misma situación, gracias.

Volver arriba
Ver perfil del usuario Enviar mensaje privado
Responder al Tema
Mostrar mensajes anteriores:   
Ir a:  
Todas las horas están en GMT + 2 Horas

Temas relacionados

Tema Autor Foros Respuestas Publicado
El foro no contiene ningún mensaje nuevo

llamar a una funcion dentro de un mapa de imagenes

coclon JavaScript 1 Miércoles 01 Mar 2017 12:50 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Busqueda de Registro con Procedimiento Almacena...

hamiltonbl Visual Basic .NET 0 Martes 11 Ago 2015 04:51 Ver último mensaje
El foro no contiene ningún mensaje nuevo

¿Podría instalarse un CMS dentro de otro?

Aneeh CMS 2 Domingo 07 Dic 2014 22:53 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Duda tonta sobre un procedimiento

RompePC MySql 0 Martes 01 Jul 2014 13:01 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Como Obtener el path de un archivo dentro de un...

P3p3 Java 2 Domingo 15 Jun 2014 19:10 Ver último mensaje
Panel de Control
No puede crear mensajes, No puede responder temas, No puede editar sus mensajes, No puede borrar sus mensajes, No puede votar en encuestas,