Ver Mensaje Individual
  #2 (permalink)  
Antiguo 16/01/2015, 07:05
Avatar de gnzsoloyo
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: Problema con procedure en mysql y phpmyadmin

El primer error es que no estás poniendo la dimensión del VARCHAR de entrada. Eso hace que no compile.
El segundo, es que pareces estar obteniendo una columna que es una cadena de texto (correoPersona) para luego tratarla como entero. Al menos no se entiende qué es esa columna.
Por otro lado, sólo tiene sentido un contador cuando recorres un resultado, pero para recorrer resultados debes usar si o si un CURSOR, cosa que no haces.
Además, usas LIKE donde deberías usar "=", ya que un LIKE (que es un asco de performance) sólo tiene sentido si usas comodines para búsqueda de patrones que no es tu caso.

Finalmente, siendo que no haces validaciones con lo obtenido, sino que simplemente insertas lo encontrado, lo más simple es hacer un INSERT INTO.. SELECT... FROM..., como este:

Código MySQL:
Ver original
  1. CREATE PROCEDURE historicoPagos(IN correo VARCHAR(100), IN idc INT(20))
  2.     INSERT INTO pagoseliminados(
  3.         idCurso,
  4.         Curso,
  5.         IVA,
  6.         FechaPago,
  7.         Banco,
  8.         Referencia,
  9.         PSI,
  10.         Pagado,
  11.         TotalPagado,
  12.         PrecioFijado,
  13.         CorreoE,
  14.         Nombre,
  15.         ApellidoP,
  16.         ApellidoM)
  17.     SELECT
  18.         L.idmateria,
  19.         E.iva,
  20.         P.fechapago,
  21.         P.formadepago,
  22.         P.referencia,
  23.         P.psi,
  24.         '',
  25.         P.monto,
  26.         E.preciofijado,
  27.         PE.nombre,
  28.         PE.apellidop,
  29.         PE.apellidom
  30.     FROM esta E
  31.         INNER JOIN lleva L ON E.idcurso = L.idcursos
  32.         INNER JOIN pagos P ON (P.idcurso = E.idcurso AND E.correoAlumno = P.correoPersona)
  33.         INNER JOIN persona PE ON (E.correoAlumno = P.correoPersona)
  34.     WHERE E.idcurso = idc AND E.correoAlumno = correo;
  35.  
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)