Ir para conteúdo
Fórum Script Brasil
  • 0

PROCEDURE não executa insert


Guilherme Teixeira

Pergunta

Ola galera boa noite.

Estou testando a seguinte PROCEDURE, mas ela não excuta o INSERT que está entre os IFs e o REPEAT. Já testei todos selects e está OK retornando os resultados certos.

alguém poderia me ajudar?

-- --------------------------------------------------------------------------------
-- Routine DDL
-- Note: comments before and after the routine body will not be stored by the server
-- --------------------------------------------------------------------------------
DELIMITER $$

CREATE DEFINER=`root`@`localhost` PROCEDURE `InsereNotasAdicionais`(IN `turmaId` INT, IN `aluno` INT, IN `bimestre` INT)
BEGIN
        -- bimestre vem por parametro
        -- aluno vem por parametro
        -- turmaId vem por parametro

    DECLARE id, materia INT;
    DECLARE done INT DEFAULT 0;
    
    DECLARE pontos float(10,2) default 0;
    DECLARE idAtualidades int default 0;
    DECLARE totalAcertos int default 0;
    DECLARE totalAcertosAt int default 0;
    DECLARE totalQuestoes int default 1;
    DECLARE totalQuestoesAt int default 1;
    


    DECLARE cur1 CURSOR FOR Select idTipoNota, idDetalheMateria from Tiponota INNER JOIN DetalheMaterias USING(idDetalheMateria) Where calculoAutomatico = 1 AND Idturma = turmaId AND idPeriodo = bimestre;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

    --  id de Atualidades
    Select idDetalheMateria From detalheMaterias Where Materia = "Atualidades" and IdTurma = turmaId INTO idAtualidades;
    
    
     
    OPEN cur1;
    
  REPEAT

    FETCH cur1 INTO id, materia;
        IF NOT done THEN
        
        IF (materia <> idAtualidades) THEN
                        
                                        -- exclui as notas antigas
                                    DELETE FROM Nota Where idTipoNota IN(SELECT idTipoNota From TipoNota Where idPeriodo = bimestre AND  IdDetalheMateria = materia AND calculoAutomatico = 1) AND idPessoa = aluno;
                        
                                   -- total questoes dadas na materia
                                   Select IF(SUM(QuantidadeQuestoes) IS NULL, 1, SUM(QuantidadeQuestoes))  FROM Prova Where idTurma = turmaId AND idDetalheMAteria = materia AND  idPeriodo = bimestre INTO totalQuestoes;
     
                                   -- total questoes dadas em atualidades
                                   Select IF(SUM(QuantidadeQuestoes) IS NULL, 1, SUM(QuantidadeQuestoes)) FROM Prova Where idTurma = turmaId AND idDetalheMAteria = idAtualidades AND  idPeriodo = bimestre INTO totalQuestoesAt;  
                            
                                   -- total de questoes acertadas
                                   Select IF(SUM(Acertos) IS NULL, 0, SUM(Acertos))   from Acertos Where idPessoa = aluno AND idProva IN(SELECT idProva FROM Prova Where idTurma = TurmaId AND idDetalheMateria = materia) INTO totalAcertos;
     
                                   -- total de questoes acertadas em Atualidades
                                   Select IF(SUM(Acertos) IS NULL, 0, SUM(Acertos)) from Acertos Where idPessoa = aluno AND idProva IN(SELECT idProva FROM Prova Where idTurma = TurmaId AND idDetalheMateria = idAtualidades) INTO totalAcertosAt;
       
                                   SET pontos = ((totalAcertos/totalQuestoes)*10)+((totalAcertosAt/totalQuestoesAt));
       
       IF (pontos > 10) then 
        SET pontos = 10;
       End If;                  
                 INSERT INTO Nota (Nota, idPessoa, idDetalheMateria, idTipoNota) VALUES (pontos, aluno, materia, id);
                 
            END IF;
            
      END IF;
 UNTIL done END REPEAT;

CLOSE cur1;
END

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,7k
×
×
  • Criar Novo...