Em um determinado package estão diversos fontes de procedures e functions e com o comando abaixo (select) podemos ver o problema: COMO PEGAR CADA FONTE IDENTIFICANDO CORRETAMENTE seu início e fim de forma a gravar arquivos separados?
No trecho abaixo podemos notar que existem declarações e descrição help no TYPE = 'PACKAGE' que pode ser desprezada mantendo apenas TYPE = 'PACKAGE BODY' e teríamos apenas dois arquivos correspondendo a identificação:
usuario1.pck_func_prov.acerta_prov.prc (line 66 até 110)
usuario1.pck_func.prov.verifica_apos_vac_prov.prc (line 30 até 65)
select * from all_source where NAME like '%FUNC%' OR NAME like '%PROV%' order by owner, name, type, line;
OWNER NAME TYPE LINE TEXT
----- ---- ---- ---- ----
USUARIO1 PCK_FUNC_PROV PACKAGE 1 PACKAGE "PCK_FUNC_PROV" IS
USUARIO1 PCK_FUNC_PROV PACKAGE 2 /**************** INICIO_HELP: ****************
USUARIO1 PCK_FUNC_PROV PACKAGE 3 ----------------------------------------------------
USUARIO1 PCK_FUNC_PROV PACKAGE 4 Nome:
USUARIO1 PCK_FUNC_PROV PACKAGE 5 PROCEDURE ACERTA_DESLOC
USUARIO1 PCK_FUNC_PROV PACKAGE 6 Proposito:
USUARIO1 PCK_FUNC_PROV PACKAGE 7 Esta procedure tem por finalidade acertar
USUARIO1 PCK_FUNC_PROV PACKAGE 8 parametros informados. Suas funcoes principais são :
USUARIO1 PCK_FUNC_PROV PACKAGE 9 ....
USUARIO1 PCK_FUNC_PROV PACKAGE 10 Nome:
USUARIO1 PCK_FUNC_PROV PACKAGE 11 PROCEDURE VERIFICA_APOS_VAC_PROV
USUARIO1 PCK_FUNC_PROV PACKAGE 12 Proposito:
USUARIO1 PCK_FUNC_PROV PACKAGE 13 Esta procedure tem por finalidade realizar as consistencias relacionadas:
USUARIO1 PCK_FUNC_PROV PACKAGE 14 ....
USUARIO1 PCK_FUNC_PROV PACKAGE 15 ....
USUARIO1 PCK_FUNC_PROV PACKAGE 16 ----------------------------------------------------
USUARIO1 PCK_FUNC_PROV PACKAGE 17 ***************** FINAL_HELP: ****************/
USUARIO1 PCK_FUNC_PROV PACKAGE 18 --
USUARIO1 PCK_FUNC_PROV PACKAGE 19 v_ep BOOLEAN;
USUARIO1 PCK_FUNC_PROV PACKAGE 20 v_mens VARCHAR2(2000);
USUARIO1 PCK_FUNC_PROV PACKAGE 21 --
USUARIO1 PCK_FUNC_PROV PACKAGE 22 --
USUARIO1 PCK_FUNC_PROV PACKAGE 23 --
USUARIO1 PCK_FUNC_PROV PACKAGE 24 PROCEDURE ACERTA_DESLOC ( P_NUMFUNC IN EVENTO_FUNC.numfunc%TYPE,
USUARIO1 PCK_FUNC_PROV PACKAGE 25 P_NUMVINC IN EVENTO_FUNC.numvinc%TYPE,
USUARIO1 PCK_FUNC_PROV PACKAGE 26 P_TIPOEVENTO IN EVENTO_FUNC.tipoevento%TYPE,
USUARIO1 PCK_FUNC_PROV PACKAGE 27 P_DATA IN DATE);
USUARIO1 PCK_FUNC_PROV PACKAGE 28 --
USUARIO1 PCK_FUNC_PROV PACKAGE 29 PROCEDURE VERIFICA_APOS_VAC_PROV ( P_AUX IN EVENTO_FUNC%ROWTYPE );
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 30 PROCEDURE VERIFICA_APOS_VAC_PROV ( P_AUX IN EVENTO_FUNC%ROWTYPE ) IS
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 31 v_dtaproxim DATE;
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 32 v_dtvac DATE;
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 33 BEGIN
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 34 --
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 35 SELECT dtvac, dtaproxim
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 36 INTO v_dtvac, v_dtaproxim
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 37 FROM circulos
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 38 WHERE numfunc = P_AUX.numfunc
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 39 AND numero = P_AUX.numvinc;
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 40 --
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 41 IF (v_dtaproxim IS NOT NULL) THEN
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 42 IF ( (P_AUX.dtini < v_dtaproxim) AND (P_AUX.dtfim > v_dtaproxim) ) THEN
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 43 GERAL_ERRO_PACK.TRATA_ERRO ( 103,
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 44 TO_CHAR(P_AUX.dtini, 'DD/MM/YYYY'),
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 45 TO_CHAR(P_AUX.dtfim, 'DD/MM/YYYY'),
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 46 'aproximação',
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 47 TO_CHAR(v_dtaproxim, 'DD/MM/YYYY') );
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 48 END IF;
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 49 END IF;
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 50 --
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 51 IF (v_dtvac IS NOT NULL) THEN
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 52 IF ( (P_AUX.dtini < v_dtvac) AND (P_AUX.dtfim > v_dtvac) ) THEN
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 53 GERAL_ERRO_PACK.TRATA_ERRO ( 103,
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 54 TO_CHAR(P_AUX.dtini, 'DD/MM/YYYY'),
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 55 TO_CHAR(P_AUX.dtfim, 'DD/MM/YYYY'),
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 56 'término',
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 57 TO_CHAR(v_dtvac, 'DD/MM/YYYY') );
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 58 END IF;
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 59 END IF;
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 60
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 61 exception
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 62 when no_data_found then
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 63 null;
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 64 END;
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 65 --
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 66 PROCEDURE ACERTA_DESLOC ( P_NUMFUNC IN EVENTO_FUNC.numfunc%TYPE,
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 67 P_NUMVINC IN EVENTO_FUNC.numvinc%TYPE,
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 68 P_TIPOEVENTO IN EVENTO_FUNC.tipoevento%TYPE,
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 69 P_DATA IN DATE) IS
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 70 --
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 71 v_data_aux DATE;
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 72 v_data1_aux DATE;
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 73 --
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 74 v_max_dtfim DATE;
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 75 v_min_dtini DATE;
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 76 --
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 77 BEGIN
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 78 --
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 82 --
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 83 v_max_dtfim := GET_MAX_DTFIM_PROV (P_NUMFUNC, P_NUMVINC, P_DATA);
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 84 SELECT /*+ INDEX (EVENTO_FUNC EV_FUNC_DTINI_I) */ dtini
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 85 INTO v_data_aux
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 86 FROM EVENTO_FUNC
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 87 WHERE numfunc = P_NUMFUNC
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 88 AND numvinc = P_NUMVINC
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 89 AND tipoevento = P_TIPOEVENTO
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 90 AND dtfim = v_max_dtfim;
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 91 --
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 96 v_min_dtini := GET_MIN_DTINI_EV (P_NUMFUNC, P_NUMVINC, P_TIPOEVENTO, v_data_aux);
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 97 SELECT /*+ INDEX (EVENTO_FUNC EV_FUNC_DTINI_I) */ dtini
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 98 INTO v_data1_aux
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 99 FROM EVENTO_FUNC
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 100 WHERE numfunc = P_NUMFUNC
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 101 AND numvinc = P_NUMVINC
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 102 AND tipoevento = P_TIPOEVENTO
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 103 AND dtini = v_min_dtini;
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 104 --
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 105 ATUALIZA_DTFIM_EV ( P_NUMFUNC, P_NUMVINC, P_TIPOEVENTO, v_data_aux, v_data1_aux-1 );
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 106 --
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 107 EXCEPTION
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 108 WHEN NO_DATA_FOUND THEN
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 109 NULL;
USUARIO1 PCK_FUNC_PROV PACKAGE BODY 110 END;