declare cursor c1 is select to_date(deb_n_vendia||'/'||deb_N_venmes||'/'||deb_n_venano ) dtvenc, (deb_n_valtot - nvl(valsai,0)) valtot FROM t_fr111_102014 where deb_n_subcat = 5 /* determina que a matricula é de um órgão Federal */ and tirar IS NULL; cursor c2 is select to_date(deb_n_vendia||'/'||deb_N_venmes||'/'||deb_n_venano ) dtvenc, (deb_n_valtot - nvl(valsai,0)) valtot FROM t_fr111_102014 where deb_n_subcat = 6 /* determina que a matricula é de um órgão Estadual */ and tirar IS NULL; cursor c3 is select to_date(deb_n_vendia||'/'||deb_N_venmes||'/'||deb_n_venano ) dtvenc, (deb_n_valtot - nvl(valsai,0)) valtot FROM t_fr111_102014 where deb_n_subcat = 7 /* determina que a matricula é de um órgão Municipal */ and tirar IS NULL; cursor c4 is select to_date(deb_n_vendia||'/'||deb_N_venmes||'/'||deb_n_venano ) dtvenc, (deb_n_valtot - nvl(valsai,0)) valtot FROM t_fr111_102014 where deb_n_subcat not in (5,6,7) /* determina uma matricula Comum, ou seja, que não é de um órgão público (Federal, Estadual ou Municipal) */ and tirar IS NULL; cursor c5 is select to_date(deb_n_vendia||'/'||deb_n_venmes||'/'||deb_n_venano ) dtvenc, deb_N_loc , (deb_n_valtot - nvl(valsai,0)) valtot from t_fr111_102014 where deb_n_subcat =7 /* determina que a matricula é de um órgão Municipal */ and tirar IS NULL; dtlimite date := to_date('31/10/2014'); vencto date; aven number(15,2) := 0; ate30 number(15,2) := 0; ate60 number(15,2) := 0; ate90 number(15,2) := 0; ate120 number(15,2) := 0; ate150 number(15,2) := 0; ate180 number(15,2) := 0; ate210 number(15,2) := 0; ate240 number(15,2) := 0; ate270 number(15,2) := 0; ate300 number(15,2) := 0; ate330 number(15,2) := 0; ate360 number(15,2) := 0; ate720 number(15,2) := 0; acima720 number(15,2) := 0; existe_loc number(1,0); begin for item in c1 loop vencto := item.dtvenc; if vencto >= dtlimite then aven := aven + item.valtot; elsif vencto >= dtlimite-30 then ate30 := ate30 + item.valtot; elsif vencto >= dtlimite-60 then ate60 := ate60 + item.valtot; elsif vencto >= dtlimite-90 then ate90 := ate90 + item.valtot; elsif vencto >= dtlimite-120 then ate120 := ate120 + item.valtot; elsif vencto >= dtlimite-150 then ate150 := ate150 + item.valtot; elsif vencto >= dtlimite-180 then ate180 := ate180 + item.valtot; elsif vencto >= dtlimite-210 then ate210 := ate210 + item.valtot; elsif vencto >= dtlimite-240 then ate240 := ate240 + item.valtot; elsif vencto >= dtlimite-270 then ate270 := ate270 + item.valtot; elsif vencto >= dtlimite-300 then ate300 := ate300 + item.valtot; elsif vencto >= dtlimite-330 then ate330 := ate330 + item.valtot; elsif vencto >= dtlimite-360 then ate360 := ate360 + item.valtot; elsif vencto >= dtlimite-720 then ate720 := ate720 + item.valtot; else acima720 := acima720 + item.valtot; end if; end loop; insert into t_fr111_res values ( AVEN, ATE30, ATE60, ATE90, ATE120, ATE150, ATE180, ATE210, ATE240, ATE270, ATE300, ATE330, ATE360, ATE720, ACIMA720, 'F' ); commit; ----------------------------------------------------------------------------------- /* AGORA VOU PEGAR OS DADOS RELATIVOS A MATRICULAS QUE SÃO DE ÓRGÃOS ESTADUAIS */ aven := 0; ate30 := 0; ate60 := 0; ate90 := 0; ate120 := 0; ate150 := 0; ate180 := 0; ate210 := 0; ate240 := 0; ate270 := 0; ate300 := 0; ate330 := 0; ate360 := 0; ate720 := 0; acima720 := 0; for item in c2 loop vencto := item.dtvenc; if vencto >= dtlimite then aven := aven + item.valtot; elsif vencto >= dtlimite-30 then ate30 := ate30 + item.valtot; elsif vencto >= dtlimite-60 then ate60 := ate60 + item.valtot; elsif vencto >= dtlimite-90 then ate90 := ate90 + item.valtot; elsif vencto >= dtlimite-120 then ate120 := ate120 + item.valtot; elsif vencto >= dtlimite-150 then ate150 := ate150 + item.valtot; elsif vencto >= dtlimite-180 then ate180 := ate180 + item.valtot; elsif vencto >= dtlimite-210 then ate210 := ate210 + item.valtot; elsif vencto >= dtlimite-240 then ate240 := ate240 + item.valtot; elsif vencto >= dtlimite-270 then ate270 := ate270 + item.valtot; elsif vencto >= dtlimite-300 then ate300 := ate300 + item.valtot; elsif vencto >= dtlimite-330 then ate330 := ate330 + item.valtot; elsif vencto >= dtlimite-360 then ate360 := ate360 + item.valtot; elsif vencto >= dtlimite-720 then ate720 := ate720 + item.valtot; else acima720 := acima720 + item.valtot; end if; end loop; insert into t_fr111_res values ( AVEN, ATE30, ATE60, ATE90, ATE120, ATE150, ATE180, ATE210, ATE240, ATE270, ATE300, ATE330, ATE360, ATE720, ACIMA720, 'E' ); commit; ----------------------------------------------------------------------------------- /* AGORA VOU PEGAR OS DADOS RELATIVOS A MATRICULAS QUE SÃO DE ÓRGÃOS MUNICIPAIS */ aven := 0; ate30 := 0; ate60 := 0; ate90 := 0; ate120 := 0; ate150 := 0; ate180 := 0; ate210 := 0; ate240 := 0; ate270 := 0; ate300 := 0; ate330 := 0; ate360 := 0; ate720 := 0; acima720 := 0; for item in c3 loop vencto := item.dtvenc; if vencto >= dtlimite then aven := aven + item.valtot; elsif vencto >= dtlimite-30 then ate30 := ate30 + item.valtot; elsif vencto >= dtlimite-60 then ate60 := ate60 + item.valtot; elsif vencto >= dtlimite-90 then ate90 := ate90 + item.valtot; elsif vencto >= dtlimite-120 then ate120 := ate120 + item.valtot; elsif vencto >= dtlimite-150 then ate150 := ate150 + item.valtot; elsif vencto >= dtlimite-180 then ate180 := ate180 + item.valtot; elsif vencto >= dtlimite-210 then ate210 := ate210 + item.valtot; elsif vencto >= dtlimite-240 then ate240 := ate240 + item.valtot; elsif vencto >= dtlimite-270 then ate270 := ate270 + item.valtot; elsif vencto >= dtlimite-300 then ate300 := ate300 + item.valtot; elsif vencto >= dtlimite-330 then ate330 := ate330 + item.valtot; elsif vencto >= dtlimite-360 then ate360 := ate360 + item.valtot; elsif vencto >= dtlimite-720 then ate720 := ate720 + item.valtot; else acima720 := acima720 + item.valtot; end if; end loop; insert into t_fr111_res values ( AVEN, ATE30, ATE60, ATE90, ATE120, ATE150, ATE180, ATE210, ATE240, ATE270, ATE300, ATE330, ATE360, ATE720, ACIMA720, 'M' ); commit; ----------------------------------------------------------------------------------- /* AGORA VOU PEGAR OS DADOS RELATIVOS A MATRICULAS QUE NÃO SÃO DE ÓRGÃOS FEDERAIS, ESTADUAIS OU MUNICIPAIS. OU SEJA, É O QUE EU CHAMO DE MATRÍCULAS "COMUNS" */ aven := 0; ate30 := 0; ate60 := 0; ate90 := 0; ate120 := 0; ate150 := 0; ate180 := 0; ate210 := 0; ate240 := 0; ate270 := 0; ate300 := 0; ate330 := 0; ate360 := 0; ate720 := 0; acima720 := 0; for item in c4 loop vencto := item.dtvenc; if vencto >= dtlimite then aven := aven + item.valtot; elsif vencto >= dtlimite-30 then ate30 := ate30 + item.valtot; elsif vencto >= dtlimite-60 then ate60 := ate60 + item.valtot; elsif vencto >= dtlimite-90 then ate90 := ate90 + item.valtot; elsif vencto >= dtlimite-120 then ate120 := ate120 + item.valtot; elsif vencto >= dtlimite-150 then ate150 := ate150 + item.valtot; elsif vencto >= dtlimite-180 then ate180 := ate180 + item.valtot; elsif vencto >= dtlimite-210 then ate210 := ate210 + item.valtot; elsif vencto >= dtlimite-240 then ate240 := ate240 + item.valtot; elsif vencto >= dtlimite-270 then ate270 := ate270 + item.valtot; elsif vencto >= dtlimite-300 then ate300 := ate300 + item.valtot; elsif vencto >= dtlimite-330 then ate330 := ate330 + item.valtot; elsif vencto >= dtlimite-360 then ate360 := ate360 + item.valtot; elsif vencto >= dtlimite-720 then ate720 := ate720 + item.valtot; else acima720 := acima720 + item.valtot; end if; end loop; insert into t_fr111_res values ( AVEN, ATE30, ATE60, ATE90, ATE120, ATE150, ATE180, ATE210, ATE240, ATE270, ATE300, ATE330, ATE360, ATE720, ACIMA720, 'C' ); commit; ----------------------------------------------------------------------------------- /* AGORA VOU PEGAR AS MATRICULAS MUNICIPAIS COM SUAS RESPECTIVAS LOCALIDADES, A FIM DE AGRUPAR SEUS DADOS POR MUNICIPIO */ delete from t_fr111_res_mun; /* A cada mês eu primeiro deleto os dados da t_fr111_res_mun do mês anterior. E só depois eu dou inserts nela */ commit; for item in c5 loop select count(*) into existe_loc from t_fr111_res_mun where loc=item.deb_n_loc; if existe_loc = 0 then insert into t_fr111_res_mun values (item.deb_n_loc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ); commit; end if; vencto := item.dtvenc; if vencto >= dtlimite then update t_fr111_res_mun set aven = aven + item.valtot where loc=item.deb_N_loc; elsif vencto >= dtlimite-30 then update t_fr111_res_mun set ate30 = ate30 + item.valtot where loc=item.deb_n_loc; elsif vencto >= dtlimite-60 then update t_fr111_res_mun set ate60 = ate60 + item.valtot where loc=item.deb_n_loc; elsif vencto >= dtlimite-90 then update t_fr111_res_mun set ate90 = ate90 + item.valtot where loc=item.deb_n_loc; elsif vencto >= dtlimite-120 then update t_fr111_res_mun set ate120 = ate120 + item.valtot where loc=item.deb_n_loc; elsif vencto >= dtlimite-150 then update t_fr111_res_mun set ate150 = ate150 + item.valtot where loc=item.deb_n_loc; elsif vencto >= dtlimite-180 then update t_fr111_res_mun set ate180 = ate180 + item.valtot where loc=item.deb_n_loc; elsif vencto >= dtlimite-210 then update t_fr111_res_mun set ate210 = ate210 + item.valtot where loc=item.deb_n_loc; elsif vencto >= dtlimite-240 then update t_fr111_res_mun set ate240 = ate240 + item.valtot where loc=item.deb_n_loc; elsif vencto >= dtlimite-270 then update t_fr111_res_mun set ate270 = ate270 + item.valtot where loc=item.deb_n_loc; elsif vencto >= dtlimite-300 then update t_fr111_res_mun set ate300 = ate300 + item.valtot where loc=item.deb_n_loc; elsif vencto >= dtlimite-330 then update t_fr111_res_mun set ate330 = ate330 + item.valtot where loc=item.deb_n_loc; elsif vencto >= dtlimite-360 then update t_fr111_res_mun set ate360 = ate360 + item.valtot where loc=item.deb_n_loc; elsif vencto >= dtlimite-720 then update t_fr111_res_mun set ate720 = ate720 + item.valtot where loc=item.deb_n_loc; else update t_fr111_res_mun set acima720 = acima720 + item.valtot where loc=item.deb_n_loc; end if; commit; end loop; end; SELECT * FROM T_TEMP; -- É aqui que dá o erro ! Na verdade ele dá erro em qualquer comando que eu coloque daqui para baixo. Até esse simples select. /* O erro é o seguinte: Relatório de erro: ORA-06550: linha 405, coluna 1: PLS-00103: Encontrado o símbolo "SELECT" 06550. 00000 - "line %s, column %s:\n%s" *Cause: Usually a PL/SQL compilation error. *Action: */