Pular para o conteúdo
  • Este tópico contém 2 respostas, 3 vozes e foi atualizado pela última vez 9 anos, 8 meses atrás por Lucas Ricardo.
Visualizando 3 posts - 1 até 3 (de 3 do total)
  • Autor
    Posts
  • #107447
    Ana
    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
      rman
      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
        Lucas 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