Pular para o conteúdo
  • Este tópico contém 2 respostas, 3 vozes e foi atualizado pela última vez 9 anos, 6 meses atrás por Avatar de Lucas RicardoLucas Ricardo.
Visualizando 3 posts - 1 até 3 (de 3 do total)
  • Autor
    Posts
  • #107447
    Avatar de AnaAna
    Participante

      Boa tarde,
      Estou tentando criar uma trigger para quando um aluno vai se inscrever em determinada matéria validar se ele passou ou não na matéria que é pré requisito.
      Eu consegui fazer a validação se eu reprovei apontar um erro. Mas o problema é se o aluno refez a matéria e passou, eu não consigo completar a inscrição.

      Por favor se alguém poder me ajudar.

      Segue código onde está dando erro

      BEGIN
      FOR AUX IN testa_prereq LOOP
      v_CD_materia := AUX.CD_MATERIA_PRE_REQUISITO;
      for HIST IN TESTA_INSC LOOP
      if hist.VL_GRAU_FINAL in (‘A’,’B’,’C’,’CC’)
      then DBMS_OUTPUT.PUT_LINE (‘INSCRIÇÃO REALIZADA COM SUCESSO’)
      elseIF hist.VL_GRAU_FINAL NOT in (‘A’,’B’,’C’,’CC’)
      then RAISE_APPLICATION_ERROR (-20101, ‘ALUNO ‘ || TO_CHAR(:new.ID_MATRICULA) || ‘ NÃO POSSUI A MATÉRIA ‘ || AUX.CD_MATERIA_PRE_REQUISITO || ‘ QUE É PRÉ-REQUISITO DA MATÉRIA ‘ || :new.cd_materia)
      END IF;
      end loop;
      end loop;

      Desde já agradeço.

      #107448
      Avatar de rmanrman
      Participante

        @Ana

        Eu costumo não implementar regra de negócio em TRIGGER, fica extremamente complicado visualizar o fluxo do processo. Eu recomendo que isso seja implementado na PROCEDURE da inscrição.

        Sobre o problema, você deve identificar e trazer no cursor apenas a ultima situação.

        #107470
        Avatar de Lucas RicardoLucas Ricardo
        Participante

          Provavelmente você possui uma data ou uma sequence na tabela que grava as notas do aluno no cursor “hist”, sendo assim você precisa retornar apenas a ultima nota por matéria, considerando que alguém aprovado na matéria não volta a realiza-la.

          Abraço.

        Visualizando 3 posts - 1 até 3 (de 3 do total)
        • Você deve fazer login para responder a este tópico.
        plugins premium WordPress