如果...然后存储过程

时间:2014-01-16 19:37:03

标签: mysql stored-procedures if-statement

我在此存储过程中出错:

  

脚本行:4您的SQL语法中有错误;检查手册   对应于您的MySQL服务器版本,以获得正确的语法   在'INSERT INTO escuelas_asignacion_maestroidEscuela附近使用,   idCiclo,第31行的“idGrado”

代码:

DELIMITER $$

DROP PROCEDURE IF EXISTS `zz73ff`.`pr_trasladar_asignaciones_por_ciclo` $$
CREATE PROCEDURE `zz73ff`.`pr_trasladar_asignaciones_por_ciclo` 
(IN p_ciclo int, IN n_ciclo int)

BEGIN

DECLARE done INT DEFAULT 0;
DECLARE escuela, ciclo, grado, nGrupos, maestro INT;
DECLARE fecha datetime;
DECLARE cursor_asignaciones CURSOR FOR
SELECT idEscuela, idCiclo, idGrado, numeroGrupos, idMaestro FROM  escuelas_asignacion_maestro
WHERE idCiclo = p_ciclo
AND idEstatus = 1
ORDER BY idEscuela, idGrado;

DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;

SELECT now() INTO fecha;

OPEN cursor_asignaciones;
REPEAT
FETCH cursor_asignaciones INTO escuela, ciclo, grado, nGrupos, maestro;

IF grado > 1 THEN

SELECT idEscuela, idCiclo, idGrado, numeroGrupos, idMaestro INTO
  escuela, ciclo, grado, nGrupos, maestro
FROM escuelas_asignacion_maestro
WHERE idCiclo = p_ciclo AND idEstatus = 1 AND idEscuela = escuela
  AND idGrado = (grado - 1);

 END IF

 INSERT INTO `escuelas_asignacion_maestro`
 (`idEscuela`, `idCiclo`, `idGrado`, `numeroGrupos`, `idEstatus`, `idMaestro`,          `fechaModificacion`)
  VALUES (escuela, n_ciclo, grado, nGrupos, 1,0, fecha);

  UNTIL done END REPEAT;

  CLOSE cursor_asignaciones;

  END $$
  DELIMITER ;

0 个答案:

没有答案