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

Como soluciono el error 1064

Estas en el tema de Como soluciono el error 1064 en el foro de Mysql en Foros del Web. Código PHP: use` proyecto `; create procedure insertarMateria ( IN nombreM varchar ( 45 ),  IN descripcion varchar ( 200 )) begin declare  n varchar ( 45 ); declare  des VARCHAR ( 200 ...
  #1 (permalink)  
Antiguo 22/04/2011, 17:45
Avatar de infraartur123  
Fecha de Ingreso: abril-2011
Mensajes: 3
Antigüedad: 13 años
Puntos: 0
Como soluciono el error 1064

Código PHP:
use`proyecto`;
create procedure insertarMateria(IN nombreM varchar(45), IN descripcion varchar(200))
begin
declare n varchar(45);
declare 
des VARCHAR(200);
set nnombreM;
set des descripcion;
insert into materia values(n,des)
end 
BUENO LO QUE PASA ES Q CUANDO BOY A CREAR ESTE STORE PROCEDURE
ME APARECE EL SIGUIENTE MENSAJE

Error Code : 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 '' at line 3



GRACIAS ATODOS LOS QUE ME PUEDAN AYUDAR ;)
  #2 (permalink)  
Antiguo 22/04/2011, 18:40
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: 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)

Etiquetas: 1064
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 09:09.