Advertisement
Guest User

Untitled

a guest
Apr 11th, 2019
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 3.07 KB | None | 0 0
  1. PROCEDURE LISTAR_DOCS_FILTRADO(
  2.   P_DESTINATARIO                  IN VARCHAR2,
  3.   P_COD_AREA                      IN VARCHAR2,
  4.   P_DATA_INICIO                   IN DATE,
  5.   P_DATA_FIM                      IN DATE,
  6.   P_ROWS                          IN INTEGER,
  7.   P_PEDACO_ASSUNTO                IN VARCHAR2,
  8.   P_CURSOR                        OUT Sys_Refcursor) IS
  9.  
  10.   V_SQL VARCHAR(32000);
  11.   BEGIN
  12.  
  13.     V_SQL := 'select * from ( ' ;
  14.     V_SQL := V_SQL || 'select cp.dcc_dcr_id_cpe,
  15.             cred.dcr_rge_ruc,
  16.             c.dce_id_comunic,
  17.             c.dce_dtc_id,
  18.             c.dce_titulo,
  19.             t.dtc_descricao,
  20.             aa.dta_cod_area,
  21.             aa.dta_nom_area,
  22.             a.das_cod_assunto,
  23.             a.das_nom_assunto,
  24.             NVL(cp.dcc_corpo_comunic, c.dce_corpo_comunic) as "DCE_CORPO_COMUNIC",
  25.             NVL(cp.dcc_id_origem, c.dce_id_origem) as "DCE_ID_ORIGEM",
  26.             cp.dcc_data_leitura,
  27.             cp.dcc_data_envio,
  28.             cp.dcc_data_remocao,
  29.             c.dce_autor,
  30.             c.dce_origem_param,
  31.             cie.dce_dce_id_estado_ciente as EstadoCiente,
  32.             (select count(1) from dtec_anexo_comunic ac
  33.             where ac.dac_dce_id_comunic=c.dce_id_comunic and
  34.             (ac.dac_dcr_idcpe=cp.dcc_dcr_id_cpe or ac.dac_dcr_idcpe is null)) as "Anexos"
  35.        from dtec_comunicacao c
  36.        join dtec_comunicacao_cpe cp
  37.          on c.dce_id_comunic = cp.dcc_dce_id_comunic
  38.        join dtec_tipo_comunic t
  39.          on c.dce_dtc_id = t.dtc_id
  40.        join dtec_assunto a
  41.          on a.das_cod_assunto = c.dce_das_cod_assunto
  42.        join dtec_area aa
  43.          on aa.dta_cod_area = c.dce_dta_cod_area
  44.        join dtec_credenciamento cred
  45.          on cred.dcr_idcpe = cp.dcc_dcr_id_cpe
  46.        left join dtec_ciente_eletronico cie
  47.          on cie.dce_dce_id_comunic = cp.dcc_dce_id_comunic
  48.         and cp.dcc_dcr_id_cpe = cie.dce_dcr_id_cpe
  49.  
  50.       where cp.dcc_data_remocao is null ';
  51.  
  52.        IF P_DESTINATARIO IS NOT NULL THEN
  53.           V_SQL := V_SQL || ' and cp.dcc_dcr_id_cpe=' || P_DESTINATARIO || ' ';
  54.        END IF;
  55.  
  56.        IF P_DATA_INICIO IS NOT NULL THEN
  57.           V_SQL := V_SQL || ' and trunc(cp.dcc_data_envio) >= :P_DATA_INICIO ';
  58.        ELSE
  59.           V_SQL := V_SQL || ' and :P_DATA_INICIO is null ';
  60.        END IF;
  61.  
  62.        IF P_DATA_FIM IS NOT NULL THEN
  63.           V_SQL := V_SQL || ' and trunc(cp.dcc_data_envio) <= :P_DATA_FIM ';
  64.        ELSE
  65.           V_SQL := V_SQL || ' and :P_DATA_FIM is null ';
  66.        END IF;
  67.  
  68.        IF P_COD_AREA IS NOT NULL THEN
  69.           V_SQL := V_SQL || ' and aa.dta_cod_area  in (' || P_COD_AREA || ') ';
  70.        END IF;
  71.  
  72.        IF P_PEDACO_ASSUNTO IS NOT NULL THEN
  73.           V_SQL := V_SQL || ' and LOWER(c.dce_titulo) like LOWER(''' || P_PEDACO_ASSUNTO || ''')';
  74.        END IF;
  75.  
  76.        V_SQL := V_SQL || ' order by cp.dcc_data_envio desc ' ;
  77.  
  78.        V_SQL := V_SQL || ' ) where ROWNUM <= ' ||  P_ROWS ;
  79.  
  80.        DBMS_OUTPUT.put_line(V_SQL);
  81.  
  82.        OPEN P_CURSOR FOR V_SQL using P_DATA_INICIO, P_DATA_FIM;
  83.  
  84. END LISTAR_DOCS_FILTRADO;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement