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

problema con procedimiento de insercion

Estas en el tema de problema con procedimiento de insercion en el foro de Mysql en Foros del Web. Forista, Tegno le siguiente proc alm, de insercion y me arroja error!!, me pueden ayudar DELIMITER $$ DROP PROCEDURE IF EXISTS `escuela`.`insertaAlumno`$$ CREATE DEFINER=`root`@`localhost` PROCEDURE ...
  #1 (permalink)  
Antiguo 29/06/2011, 14:58
 
Fecha de Ingreso: junio-2011
Mensajes: 5
Antigüedad: 12 años, 9 meses
Puntos: 0
problema con procedimiento de insercion

Forista,

Tegno le siguiente proc alm, de insercion y me arroja error!!, me pueden ayudar


DELIMITER $$

DROP PROCEDURE IF EXISTS `escuela`.`insertaAlumno`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `insertaAlumno`(
in nom_al varchar(20),
in ape_al varchar(20),
in fecha_ing datetime,
in tipo_al char(18),
out cod_al char(13)
)
BEGIN

select cod_al = 0;
/*UPPER: retorna la cadena (str) con todos los caracrteres a mayusculas según el mapeo del conj de caracteres actual*/
if exists(
select nom_alumno from alumno where upper(nom_alumno) = upper(nom_al) and upper(ape_alumno) = upper(ape_al)
begin
select 'Los datos de este alumno estan registrado. Se cancela la operación!';
end;
else
begin
-- llamamos al procedimiento indicandole donde almacenara el resultado(@tot)
call nvoCodAlumno(@tot);
-- ahora podemos acceder a @tot cuadno queramos
cod_al = @tot;
insert into alumno values(cod_al, nom_al, ape_al, fecha_ing, tipo_al);
end;
end if;

END$$

DELIMITER ;
  #2 (permalink)  
Antiguo 30/06/2011, 16:12
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: problema con procedimiento de insercion

Saludos

Nos puedes indicar cual es el error que te arroja?
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #3 (permalink)  
Antiguo 30/06/2011, 16:32
 
Fecha de Ingreso: junio-2011
Mensajes: 5
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: problema con procedimiento de insercion

gracias nano por tu disposición, estoy empezadno a programar sp, y el citadi me arroja el siguiente error:


(0 row(s)affected)
(0 ms taken)

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 'begin
select 'Los datos de este alumno estan registrado. Se cancela la operaci' at line 12
(0 ms taken)

haber si me puedes ayudar
  #4 (permalink)  
Antiguo 30/06/2011, 16: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, 4 meses
Puntos: 2658
Respuesta: problema con procedimiento de insercion

Por lo pronto, MySQL no acepta bloques BEGIN/END anidados.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 30/06/2011 a las 16:49
  #5 (permalink)  
Antiguo 30/06/2011, 16:45
 
Fecha de Ingreso: junio-2011
Mensajes: 5
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: problema con procedimiento de insercion

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Por lo pronto, MySQL no acepta bloques BEGIN/END anidados.

Gracias, modificare la estructura y les comento
  #6 (permalink)  
Antiguo 30/06/2011, 16:49
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, 4 meses
Puntos: 2658
Respuesta: problema con procedimiento de insercion

Al margen de eso, el bloque ID ... THEN/ELSE/END IF estaba mal escrito, la asignación de datos entre variables no se hace con SELECT sino con SET, las variables de usuario deben ser inicalizadas antes de ser usadas, etc.
Código MySQL:
Ver original
  1. DELIMITER $$
  2.  
  3. DROP PROCEDURE IF EXISTS `escuela`.`insertaAlumno`$$
  4.  
  5. CREATE DEFINER=`root`@`localhost` PROCEDURE `insertaAlumno`(
  6.     IN nom_al VARCHAR(20),
  7.     IN ape_al VARCHAR(20),
  8.     IN fecha_ing DATETIME,
  9.     IN tipo_al CHAR(18),
  10.     OUT cod_al CHAR(13))
  11.     SET cod_al = 0;
  12.     /*UPPER: retorna la cadena (str) con todos los caracrteres a mayusculas según el mapeo del conj de caracteres actual*/
  13.     IF (SELECT nom_alumno FROM alumno WHERE UPPER(nom_alumno) = UPPER(nom_al) AND UPPER(ape_alumno) = UPPER(ape_al)) THEN
  14.         SELECT 'Los datos de este alumno estan registrado. Se cancela la operación!';
  15.     ELSE
  16.         -- llamamos al procedimiento indicandole donde almacenara el resultado(@tot)
  17.         SET @tot= 0;
  18.         CALL nvoCodAlumno(@tot);
  19.         -- ahora podemos acceder a @tot cuadno queramos
  20.         SET cod_al = @tot;
  21.         INSERT INTO alumno VALUES(cod_al, nom_al, ape_al, fecha_ing, tipo_al);
  22.     END IF;
  23. END$$
  24.  
  25. DELIMITER ;
__________________
¿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 30/06/2011, 16:59
 
Fecha de Ingreso: junio-2011
Mensajes: 5
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: problema con procedimiento de insercion

Gracias por tu aporte, habia utilizado SQL SERVER, y la sintaxis es distinta, se mantiene el lema la práctica hace al maestro!!!
  #8 (permalink)  
Antiguo 30/06/2011, 18:02
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, 4 meses
Puntos: 2658
Respuesta: problema con procedimiento de insercion

Si, el problema es que no hay un estándar para los SP, como lo hay para el resto del SQL, de modo que no existe una forma unificada de escribirlos.

__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 30/06/2011, 18:18
 
Fecha de Ingreso: junio-2011
Mensajes: 5
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: problema con procedimiento de insercion

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Si, el problema es que no hay un estándar para los SP, como lo hay para el resto del SQL, de modo que no existe una forma unificada de escribirlos.

a modificar nomas no queda otra...Saludos!!!

Etiquetas: procedurestore
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 01:39.