Ver Mensaje Individual
  #6 (permalink)  
Antiguo 30/06/2011, 16:49
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 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)