declare v_matricula number:=0; begin for r in ( select mt.nu_matr_curso, aa.cd_perd_letv, aa.CD_ATIV_ACAD, t.cd_turma, mt.NU_SIT_MATR_TURMA, (select dh.cd_sit_hist from siga_dado_hist dh where dh.nu_matr_curso=mt.nu_matr_curso and dh.cd_ativ_acad=aa.cd_ativ_acad) as cd_sit_hist from siga_matricula_turma mt, siga_turma t, siga_atividade_academica aa, siga_componente_curricular cc, siga_situacao_matricula sm where mt.cd_turma=t.cd_turma and t.cd_ativ_acad=aa.cd_ativ_acad and aa.cd_compnt_curr=cc.cd_compnt_curr and mt.NU_SIT_MATR_TURMA=sm.CD_SIT_MATR and cc.cd_tp_compnt_curr=29 --Trabalho de dissertacao/tese and mt.nu_sit_matr_turma<>40 and sm.TP_SIT_MATR<>'CAN' --and mt.NU_MATR_CURSO=200655102 and exists (select 8 from siga_matricula_turma mt1, SIGA_SITUACAO_MATRICULA sm1, siga_turma t1, SIGA_ATIVIDADE_ACADEMICA aa1 where mt1.CD_TURMA=t1.CD_TURMA and t1.CD_ATIV_ACAD=aa1.CD_ATIV_ACAD and mt1.nu_sit_matr_turma=sm1.cd_sit_matr and mt1.nu_matr_curso=mt.nu_matr_curso and mt1.CD_TURMA<>mt.CD_TURMA and aa1.CD_COMPNT_CURR=aa.CD_COMPNT_CURR and mt1.NU_SIT_MATR_TURMA<>40 and sm1.TP_SIT_MATR<>'CAN' ) --group by mt.nu_matr_curso having count(*)=1 order by mt.nu_matr_curso, aa.cd_perd_letv desc ) loop if r.nu_matr_curso=v_matricula then -- Atualizar siga_matricula_turma do periodo anterior update siga_matricula_turma set nu_sit_matr_turma=40, -- Renovacao de trabalho de dissertacao/tese ts_matr_turma=sysdate where nu_matr_curso=r.nu_matr_curso and cd_turma=r.cd_turma; -- Inserir siga_historico_matricula_turma do periodo anterior insert into siga_historico_matricula_turma values (r.nu_matr_curso, r.cd_turma, 40, 'RENOVTESE','0',sysdate); if r.cd_sit_hist <> 17 then -- Atualizar siga_dado_hist do periodo anterior update siga_dado_hist set cd_sit_hist=17, -- Renovacao de trabalho de dissertacao/tese ts_dado_hist=sysdate where nu_matr_curso=r.nu_matr_curso and cd_ativ_acad=r.cd_ativ_acad; -- Inserir siga_hist_dado_hist do periodo anterior insert into siga_hist_dado_hist values (r.nu_matr_curso, r.cd_ativ_acad, 17, 0, 'RENOVTESE', sysdate, null, null, null, null); end if; else if r.nu_sit_matr_turma <> 1 then update siga_matricula_turma set nu_sit_matr_turma=1, -- Confirmacao matricula em trabalho de dissertacao/tese no periodo letivo mais recente ts_matr_turma=sysdate where nu_matr_curso=r.nu_matr_curso and cd_turma=r.cd_turma; -- Inserir siga_historico_matricula_turma do periodo mais recente insert into siga_historico_matricula_turma values (r.nu_matr_curso, r.cd_turma, 1, 'CONFIRTS','0',sysdate); end if; if r.cd_sit_hist = null then -- Inserir NI no dado historico do periodo letivo mais recente insert into siga_dado_hist values (r.nu_matr_curso, r.cd_ativ_acad, 2, 0, sysdate, null, null, null); -- Inserir NI no siga_hist_dado_hist do periodo mais recente insert into siga_hist_dado_hist values (r.nu_matr_curso, r.cd_ativ_acad, 2, 0, 'CONFIRTS', sysdate, null, null, null, null); end if; v_matricula:=r.nu_matr_curso; end if; end loop; COMMIT; end;