Ver Mensaje Individual
  #2 (permalink)  
Antiguo 22/04/2011, 18:40
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: Como soluciono el error 1064

Para entrar un procedure multilínea a través de la consola MySQL o por script, tienes que cambiar momentáneamente el delimitador de sentencia para permitir que el procedure completo como un sólo objeto, recordando volver el delimitador de nuevo al original luego:
Código MySQL:
Ver original
  1. USE `proyecto`;
  2. DELIMITER $$
  3. CREATE PROCEDURE insertarMateria(IN nombreM VARCHAR(45), IN descripcion VARCHAR(200))
  4.   DECLARE n VARCHAR(45);
  5.   DECLARE des VARCHAR(200);
  6.   SET n= nombreM;
  7.   SET des = descripcion;
  8.   INSERT INTO materia VALUES(n,des)
  9. END $$
  10. DELIMITER;
Este tema se ha tratado en el foro muchas veces. Usa el buscador para encontrar losposts que se refieren a él.

Por lo demás, estás creando variables locales innecesriamente, sin consideramos que sólo las utilizas para ponerlo en la tabla. Esto da el mismo resultado:
Código MySQL:
Ver original
  1. USE `proyecto`;
  2. DELIMITER $$
  3. CREATE PROCEDURE insertarMateria(IN nombreM VARCHAR(45), IN descripcion VARCHAR(200))
  4. INSERT INTO materia VALUES(nombreM, descripcion);
  5. END $$
  6. DELIMITER;
Personalmente, crear un SP para ejecutar solamente eso me parece un desperdicio de tiempo y programación, a menos que los uses como modo de evitar sql-injection o aumentar la seguridad.
El tema se ha tratado anteriormente en el foro varias veces. Usa el buscador para localizar los posts.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)