begin for i in ( select pl.cd_perd_letv from siga_periodo_letivo pl where pl.cd_perd_letv>='2009.1' and pl.cd_perd_letv<'2014.1' and pl.cd_tp_perd_letv=1 order by pl.cd_perd_letv ) loop for r in ( select i.cd_perd_letv as perd_letv_admis, pl.cd_perd_letv as perd_letv_sit_acad from siga_periodo_letivo pl where pl.cd_perd_letv>=i.cd_perd_letv and pl.cd_perd_letv<'2014.1' and pl.cd_tp_perd_letv=1 order by pl.cd_perd_letv ) loop for s in ( select pf.nm_progr_form, v.nu_ano_admis || '.' || v.nu_semtr_admis as ingrs, sa.cd_perd_letv, tsa.ds_tp_sit_acad, count(*) as qtde from siga_vinculo v, siga_programa_formacao pf, siga_situacao_academica sa, siga_tipo_situacao_academica tsa where v.cd_progr_form=pf.cd_progr_form and sa.cd_tp_sit_acad=tsa.cd_tp_sit_acad and sa.nu_matr_curso=v.nu_matr_curso and pf.cd_nivel = 1 and v.nu_ano_admis || '.' || v.nu_semtr_admis = r.perd_letv_admis and pf.cd_progr_form not in (14,15) and v.cd_tp_ingrs in (7,15) and sa.cd_perd_letv=r.perd_letv_sit_acad and sa.dt_def_sit=(select max(sa1.dt_def_sit) from siga_situacao_academica sa1 where sa1.cd_perd_letv=sa.cd_perd_letv and sa1.nu_matr_curso=sa.nu_matr_curso) group by pf.nm_progr_form, v.nu_ano_admis || '.' || v.nu_semtr_admis, sa.cd_perd_letv, tsa.ds_tp_sit_acad order by pf.nm_progr_form, v.nu_ano_admis || '.' || v.nu_semtr_admis, sa.cd_perd_letv, tsa.ds_tp_sit_acad ) loop dbms_output.put_line(s.nm_progr_form || ';' || s.ingrs || ';' || s.cd_perd_letv || ';' || s.ds_tp_sit_acad || ';' || s.qtde); end loop; end loop; end loop; end;