When I step date filter for the same day, query returns empty and there is data

0

In my table / base there is data for day 05/08/2015 , it happens that when I pass a date filter for the same day, it does not work, it returns empty. If I go like this: 04/08/2015 and 05/08/2015 does not work either. It only works like this: 04/08/2015 and 06/08/2015 , remembering that there is only data on day 05/08/2015 .

I am suspicious that it is the question of the hour part. This runs on a packege and there is a procedure inside that does this. The parameters come by means of an xml. I'm getting it because I do not know the package well and so on.

Below my package:

CREATE OR REPLACE PACKAGE BODY HES_REL_MATMED
is

  function p_versao   return varchar2
  is
  begin
     return 'CVS>> SPEC: 1.4 - BODY: 1.18 - Sac 32405 - Novo tipo de proposta - Solicitação de Proposta.';
  end;
  --
  --
  -- Inicilização dos atributos do record de parametros
  -- Também pode ser colocado operações iniciais aqui dentro.
  --
  procedure inicializar( p_tbl_paramSet   in out nocopy top_utl_param.tbl_paramSet
                       , p_rec_controles  in out nocopy top_utl_rel.rec_controles
                       , p_xml_param      in            clob
                       )
  is
  begin
     --
     p_rec_controles.logs            := null;
     p_rec_controles.parametros      := p_xml_param;
     --
     p_rec_controles.validacao_ok    := true;
     p_rec_controles.exe_cursor      := false;
     p_rec_controles.chkpoint        := 0;
     p_rec_controles.linhas_lidas    := 0;
     p_rec_controles.linhas_emitidas := 0;
     p_rec_controles.sql_cursor      := null;

     ts_log_execucao ('cmc_rel_DEM_PROP_ANALITICO.inicializar'
                        , NULL
                        , sqlerrm
                        , p_rec_controles.sql_cursor
                        , 'INICIO'
                         ) ;
     top_utl_param.add_param( p_tbl_paramSet    => p_tbl_paramSet
                            , p_nom_grp_param   => 'parametros'
                            , p_nom_coluna      => 'pDataInicial'
                            , p_tpo_oracle      => 'VARCHAR2'
                            , p_ind_obrigatorio => 'N'
                            , p_nom_label       => 'Data Inicial'
                            , p_tam_maximo      => 10
                            , p_ind_origem_vlr  => 'N'
                            ) ;

     top_utl_param.add_param( p_tbl_paramSet    => p_tbl_paramSet
                            , p_nom_grp_param   => 'parametros'
                            , p_nom_coluna      => 'pDataFinal'
                            , p_tpo_oracle      => 'VARCHAR2'
                            , p_ind_obrigatorio => 'N'
                            , p_nom_label       => 'Data Final'
                            , p_tam_maximo      => 10
                            , p_ind_origem_vlr  => 'N'
                            ) ;

     top_utl_param.add_param( p_tbl_paramSet    => p_tbl_paramSet
                            , p_nom_grp_param   => 'parametros'
                            , p_nom_coluna      => 'pTipoTabela'
                            , p_tpo_oracle      => 'VARCHAR2'
                            , p_ind_obrigatorio => 'N'
                            , p_nom_label       => 'Tipo Tabela'
                            , p_tam_maximo      => 1
                            , p_ind_origem_vlr  => 'N'
                            ) ;

     top_utl_param.add_param( p_tbl_paramSet    => p_tbl_paramSet
                            , p_nom_grp_param   => 'parametros'
                            , p_nom_coluna      => 'pTabelaSelecao'
                            , p_tpo_oracle      => 'VARCHAR2'
                            , p_ind_obrigatorio => 'N'
                            , p_nom_label       => 'Seleção multipla de tabelas'
                            , p_ind_origem_vlr  => 'N'
                            ) ;

    top_utl_param.add_param( p_tbl_paramSet    => p_tbl_paramSet
                            , p_nom_grp_param   => 'parametros'
                            , p_nom_coluna      => 'pClassificacaoSelecao'
                            , p_tpo_oracle      => 'VARCHAR2'
                            , p_ind_obrigatorio => 'N'
                            , p_nom_label       => 'Seleção multipla de classificoes'
                            , p_ind_origem_vlr  => 'N'
                            ) ;

    top_utl_param.add_param( p_tbl_paramSet    => p_tbl_paramSet
                            , p_nom_grp_param   => 'parametros'
                            , p_nom_coluna      => 'pGrupoSelecao'
                            , p_tpo_oracle      => 'VARCHAR2'
                            , p_ind_obrigatorio => 'N'
                            , p_nom_label       => 'Seleção multipla de grupos'
                            , p_ind_origem_vlr  => 'N'
                            ) ;

    top_utl_param.add_param( p_tbl_paramSet    => p_tbl_paramSet
                            , p_nom_grp_param   => 'parametros'
                            , p_nom_coluna      => 'pAutorizacaoPrevia'
                            , p_tpo_oracle      => 'VARCHAR2'
                            , p_ind_obrigatorio => 'N'
                            , p_nom_label       => 'Autorização prévia'
                            , p_ind_origem_vlr  => 'N'
                            ) ;

  end;
  --
  -- get_configurações:
  --
  -- Obtém informações gerais pertinentes à execução deste relatório
  -- em ts.fila_relatorio, caso tenha a necessidade de outras informações
  -- em top_utl_rel.rec_config_relatorio, falar com os arquitetos.
  --
  procedure get_configuracoes ( p_rec_controles  in out nocopy top_utl_rel.rec_controles
                              , p_reg_config     in out nocopy top_utl_rel.rec_config_relatorio
                              , p_num_seq_fila   in            number
                              )
  is
  begin
     --
     p_reg_config := ts.top_utl_rel.get_configuracoes( p_num_seq_fila => p_num_seq_fila );
     --
     top_utl_rel.abrir_xml_configuracao ( p_xml_log => p_rec_controles.logs );
     top_utl_rel.obter_xml_configuracoes( p_xml_log => p_rec_controles.logs , p_reg_config => p_reg_config );
     --
     if  p_num_seq_fila is null then
         --
         top_utl_rel.abrir_xml_mensagens  ( p_xml_log => p_rec_controles.logs );
         top_utl_rel.gerar_xml_mensagem   ( p_xml_log => p_rec_controles.logs , p_leitor => top_utl_padrao.tpo_leitor_usuario , p_tipo => top_utl_padrao.tpo_mensagem_erro , p_texto => 'O provedor dos dados nao recebeu o identificador do servico de relatorio solicitado.' );
         top_utl_rel.gerar_xml_mensagem   ( p_xml_log => p_rec_controles.logs , p_leitor => top_utl_padrao.tpo_leitor_sistema , p_tipo => top_utl_padrao.tpo_mensagem_erro , p_texto => 'JasperReport: TsCmc1005JRA.jasper nao esta enviando o parametro p_num_seq_fila para TableFunction: HES_REL_MATMED.get_dados.' );
         top_utl_rel.fechar_xml_mensagens ( p_xml_log => p_rec_controles.logs );
         --
     end if;
     --
     top_utl_rel.fechar_xml_configuracao( p_xml_log => p_rec_controles.logs );
     --
  end;
  --
  -- tratar_parametros:
  -- -------------------
  -- O resultado indicará se o processo poderá gerar as linhas p_continuar = true.
  -- Para isto se um teste falhar este parametro deverá ser colocado como false.
  -- Se não tiver parametros ou validações a fazer, deixe apenas a primeira linha.
  --
  procedure tratar_parametros   ( p_rec_controles  in out nocopy top_utl_rel.rec_controles
                                , p_tbl_paramSet   in out nocopy top_utl_param.tbl_paramSet
                                )
  is                                               -- Explique as variaveis

  begin
     --
     top_utl_param.transformar_xml ( p_cod_retorno  => p_rec_controles.ind_retorno
                                   , p_msg_retorno  => p_rec_controles.msg_retorno
                                   , p_xml          => p_rec_controles.parametros
                                   , p_tbl_paramSet => p_tbl_paramSet
                                   ) ;
     --
     if  p_rec_controles.ind_retorno  = top_utl_padrao.tpo_mensagem_informativa then p_rec_controles.validacao_ok := true;
                                                                                else p_rec_controles.validacao_ok := false;
     end if;
     --
     top_utl_param.gerar_logs      ( p_xml_log       => p_rec_controles.logs
                                   , p_tab_paramsets => p_tbl_paramSet
                                   ) ;
     --
  end;
  --
  -- definir_cursor:
  --
  -- Montagem do String para execução dinâmica do cursor
  --
  -- O que não pode ser feito de forma alguma é concatenação de parametros,
  -- não importa o tamanho que este método poderá ter.
  --
  procedure definir_cursor      ( p_rec_controles  in out nocopy top_utl_rel.rec_controles
                                , p_info_relatorio in out nocopy top_utl_rel.rec_config_relatorio
                                , p_tbl_paramSet   in out nocopy top_utl_param.tbl_paramSet
                                )
  is
  begin
     --
     -- Atribuir a variável abaixo a query compactada, pois atualmente no 10g temos um limite de 32KB
     --
     p_rec_controles.sql_cursor := '';


    p_rec_controles.sql_cursor := p_rec_controles.sql_cursor
                               || trim ('SELECT ITEM.DT_INCLUSAO DATAINCLUSAO')
                               || trim (', DECODE(MAT.IND_TIPO_MAT_MED,''1'', ''BRASINDICE'',''2'', ''SIMPRO'',''9'',''TABELAPROPRIA'') TIPOTABELA')
                               || trim (', MAT.NOM_TABELA TABELA')
                               || trim (', VAL.COD_ITEM_MAT_MED_ORIG CODIGO')
                               || trim (', ITEM.COD_TUSS TUSS')
                               || trim (', CASE WHEN VAL.NOME_MAT_MED IS NOT NULL THEN TRIM(VAL.NOME_MAT_MED) ELSE TRIM(ITEM.NOM_COMERCIAL) END DESCRICAO')
                               || trim (', FAB.NOM_FABRICANTE FABRICANTE')
                               || trim (', ITEM.COD_REF_FABRICANTE REFERENCIAFABRICANTE')
                               || trim (', ITEM.REGISTRO_ANVISA REGISTROANVISA')
                               || trim (', DECODE(ITEM.IND_CLASS,''BD'', ''Bem Durável'',''MC'', ''Material de Consumo'',''ME'',''Material Especial'',''OT'',''Ortese'',''PT'',''Protese'',''ST'',''Síntese'',''IT'',''Instrumental'',''Sem classificação'') CLASSIFICACAOSIMPRO')
                               || trim (', ITEM.COD_GRUPO_MAT_MED AS GRUPOMATMED')
                               || trim (', ITEM.COD_GRUPO_ESTATISTICO AS GRUPOESTATISTICO')
                               || trim (', ITEM.IND_AUTORIZACAO AS AUTORIZACAOPREVIA')
                               || trim (', to_char(VAL.DT_VIGENCIA,''dd/mm/yyyy'') AS ULTIMAVIGENCIA')
                               || trim (', VAL.VAL_MAT_MED AS VALOR')
                               || trim (', PRS.NOME_PRESTADOR AS PRESTADORTABELAPROPRIA')
                 || rtrim (' FROM (SELECT COD_ITEM_MAT_MED, COD_ITEM_MAT_MED_ORIG, SIGLA_TABELA_MAT_MED, IND_TIPO_MAT_MED, MAX(DT_VIGENCIA) DT_VIGENCIA ')
                 || rtrim (' FROM VALOR_MAT_MED')
                 || rtrim (' WHERE DT_VIGENCIA >= to_date('''||p_tbl_paramSet('parametros').param('pDataInicial').ocorrencia(1).valor_string ||''',''dd/mm/yyyy'')')
                 || rtrim (' AND DT_VIGENCIA <= to_date('''||p_tbl_paramSet('parametros').param('pDataFinal').ocorrencia(1).valor_string ||''',''dd/mm/yyyy'')')
                 || rtrim (' GROUP BY COD_ITEM_MAT_MED, COD_ITEM_MAT_MED_ORIG, SIGLA_TABELA_MAT_MED, IND_TIPO_MAT_MED) VIGENCIA_VALOR')
                               || rtrim (' JOIN VALOR_MAT_MED VAL')
                 || rtrim (' ON VIGENCIA_VALOR.COD_ITEM_MAT_MED = VAL.COD_ITEM_MAT_MED')
                 || rtrim (' AND VIGENCIA_VALOR.COD_ITEM_MAT_MED_ORIG = VAL.COD_ITEM_MAT_MED_ORIG')
                 || rtrim (' AND VIGENCIA_VALOR.SIGLA_TABELA_MAT_MED = VAL.SIGLA_TABELA_MAT_MED')
                 || rtrim (' AND VIGENCIA_VALOR.IND_TIPO_MAT_MED = VAL.IND_TIPO_MAT_MED')
                 || rtrim (' AND VIGENCIA_VALOR.DT_VIGENCIA = VAL.DT_VIGENCIA')
                               || rtrim (' JOIN TABELA_MAT_MED MAT ON VAL.SIGLA_TABELA_MAT_MED = MAT.SIGLA_TABELA_MAT_MED')
                               || rtrim (' JOIN ITEM_MAT_MED ITEM  ON ITEM.COD_ITEM_MAT_MED = VAL.COD_ITEM_MAT_MED AND ITEM.IND_TIPO_MAT_MED = VAL.IND_TIPO_MAT_MED')
                               || rtrim (' LEFT JOIN PRESTADOR_SERVICO PRS ON PRS.COD_PRESTADOR_TS = MAT.COD_PRESTADOR_TS')
                               || rtrim (' LEFT JOIN GRUPO_ESTATISTICO GRP ON GRP.COD_GRUPO_ESTATISTICO = ITEM.COD_GRUPO_ESTATISTICO')
                               || rtrim (' LEFT JOIN FABRICANTE_MAT_MED FAB ON ITEM.COD_FABRICANTE = FAB.COD_FABRICANTE')
                               || rtrim (' WHERE ITEM.DT_INCLUSAO BETWEEN to_date('''||p_tbl_paramSet('parametros').param('pDataInicial').ocorrencia(1).valor_string ||''',''dd/mm/yyyy'') ')
                               || rtrim (' AND to_date('''||p_tbl_paramSet('parametros').param('pDataFinal').ocorrencia(1).valor_string ||''',''dd/mm/yyyy'')');


    if p_tbl_paramSet('parametros').param('pTipoTabela').ocorrencia(1).valor_string is not null then
       p_rec_controles.sql_cursor := p_rec_controles.sql_cursor || rtrim ('   AND MAT.IND_TIPO_MAT_MED = '||p_tbl_paramSet('parametros').param('pTipoTabela').ocorrencia(1).valor_string||' ');
    end if;

    if (p_tbl_paramSet('parametros').param('pTabelaSelecao').ocorrencia(1).valor_string is not null) then
       p_rec_controles.sql_cursor := p_rec_controles.sql_cursor || rtrim ('   AND MAT.SIGLA_TABELA_MAT_MED IN ('||p_tbl_paramSet('parametros').param('pTabelaSelecao').ocorrencia(1).valor_string||') ');
    end if;

    if (p_tbl_paramSet('parametros').param('pClassificacaoSelecao').ocorrencia(1).valor_string is not null) then
       p_rec_controles.sql_cursor := p_rec_controles.sql_cursor || rtrim ('   AND ITEM.COD_GRUPO_MAT_MED IN ('||p_tbl_paramSet('parametros').param('pClassificacaoSelecao').ocorrencia(1).valor_string||') ');
    end if;

    if (p_tbl_paramSet('parametros').param('pGrupoSelecao').ocorrencia(1).valor_string is not null) then
       p_rec_controles.sql_cursor := p_rec_controles.sql_cursor || rtrim ('   AND GRP.COD_GRUPO_ESTATISTICO IN ('||p_tbl_paramSet('parametros').param('pGrupoSelecao').ocorrencia(1).valor_string||') ');
    end if;

    if p_tbl_paramSet('parametros').param('pAutorizacaoPrevia').ocorrencia(1).valor_string is not null then
       p_rec_controles.sql_cursor := p_rec_controles.sql_cursor || rtrim ('   ITEM.IND_AUTORIZACAO = '||p_tbl_paramSet('parametros').param('pAutorizacaoPrevia').ocorrencia(1).valor_string||' ');
    end if;

    p_rec_controles.sql_cursor := p_rec_controles.sql_cursor ||rtrim (' ORDER BY ITEM.DT_INCLUSAO, MAT.IND_TIPO_MAT_MED, MAT.NOM_TABELA, VAL.COD_ITEM_MAT_MED_ORIG');

    p_rec_controles.exe_cursor := true;

     ts_log_execucao ('cmc_rel_DEM_PROP_ANALITICO.definir_cursor'
                        , NULL
                        , sqlerrm
                        , p_rec_controles.sql_cursor
                        , 'Query'
                         ) ; 
--dbms_output.enable(100000);
--dbms_output.put_line(p_rec_controles.sql_cursor);

  exception
  when others then
       --
       -- Caso um problema ocorra, atribuir false ao controle e agregar a mensagem do problema no XML
       -- O que pode ser feito especificamente para tipo de leitos ( leigo ou técnico ).
       --
       p_rec_controles.exe_cursor := false;
       p_rec_controles.sql_cursor := null;
       --
       top_utl_rel.gerar_xml_mensagem ( p_xml_log => p_rec_controles.logs
                                      , p_leitor  => top_utl_padrao.tpo_leitor_usuario
                                      , p_tipo    => top_utl_padrao.tpo_mensagem_erro
                                      , p_texto   => 'Cursor não definido, '||top_utl_padrao.MsgErro
                                      ) ;
  end;
  --
  -- abrir_cursor:
  -- ------------
  -- Realizar o OPEN para p_cursor
  -- Utilização da DBMS_SQL apenas no 11g quando será possivel converter em
  -- sys_refcursor.
  --
  -- O que não pode ser feito de forma alguma é concatenação de parametros,
  -- não importa o tamanho que este método poderá ter.
  --
  procedure abrir_cursor        ( p_rec_controles  in out nocopy top_utl_rel.rec_controles
                                , p_info_relatorio in out nocopy top_utl_rel.rec_config_relatorio
                                , p_tbl_paramSet   in out nocopy top_utl_param.tbl_paramSet
                                , p_cur_entidade   in out nocopy sys_refcursor
                                )
  is
  begin
      --
      -- Testes Obrigatório.
      --

      if  p_cur_entidade%isopen then close p_cur_entidade;
      end if;
      --
      -- Se deu problema em definir_cursor, nada deve ser processado.
      --

      if  p_rec_controles.sql_cursor is null or not p_rec_controles.exe_cursor  then return;
      end if;
      --
      -- Definindo como o cursor será executado, mediante variações de parametros e variáveis de configuração
      --

       dbms_output.put_line(p_rec_controles.sql_cursor);     

     open  p_cur_entidade
     for   p_rec_controles.sql_cursor;

      --
      top_utl_rel.gerar_xml_mensagem  ( p_xml_log => p_rec_controles.logs
                                      , p_leitor  => top_utl_padrao.tpo_leitor_usuario
                                      , p_tipo    => top_utl_padrao.tpo_mensagem_informativa
                                      , p_texto   => 'Cursor aberto, consulta executavel. Obtendo registros.'
                                      ) ;
      --
      p_rec_controles.exe_cursor := true;
      --
  exception
  when others then
       --
       -- Caso um problema ocorra, atribuir false ao controle e agregar a mensagem do problema no XML
       -- O que pode ser feito especificamente para tipo de leitos ( leigo ou técnico ).
       --
       p_rec_controles.exe_cursor := false;
       top_utl_rel.gerar_xml_mensagem ( p_xml_log => p_rec_controles.logs
                                      , p_leitor  => top_utl_padrao.tpo_leitor_usuario
                                      , p_tipo    => top_utl_padrao.tpo_mensagem_erro
                                      , p_texto   => 'Cursor não foi aberto, '||top_utl_padrao.MsgErro
                                      ) ;
       --
  end;
  --
  -- Table Function: Retorno dos dados
  --
  function get_dados( p_num_seq_fila   number
                    , p_xml_parametros clob   default null
                    )
  return   tbl_entidade
  pipelined
  is
     tab_entidade                      tbl_entidade;                       -- Coleção de retorno deve estar declarada neste escopo
     reg_config                        top_utl_rel.rec_config_relatorio;   -- Configurações obtidas no cadastro do tipo de relatório
     reg_ctrls                         top_utl_rel.rec_controles;          -- Variáveis de Controles do processo
     cur_entidade                      sys_refcursor;                      -- Cursor retornador dos dados.
     --
     tab_paramSet                      top_utl_param.tbl_paramSet;
     --
  begin
     --
     -- Inicializar as variaveis declaradas acima, método obrigatório por não ser Serially_reuseble.
     --
     inicializar( p_tbl_paramSet   => tab_paramSet
                , p_rec_controles  => reg_ctrls
                , p_xml_param      => p_xml_parametros
                ) ;
     --
     -- abrir log
     --
     top_utl_rel.abrir_xml_log( p_xml_log => reg_ctrls.logs ) ;
     --
     -- obter configurações do servico
     --
     reg_ctrls.chkpoint := 100; get_configuracoes ( p_rec_controles => reg_ctrls , p_reg_config => reg_config , p_num_seq_fila => p_num_seq_fila );
     --
     if  p_num_seq_fila is null then goto fechar_relatorio;
     end if;
     --
     -- Efetuar Tratamento dos parametros recebidos
     --
     if  p_xml_parametros is not null then
         --
         reg_ctrls.chkpoint := 500;
         tratar_parametros   ( p_rec_controles => reg_ctrls , p_tbl_paramSet => tab_paramSet );
         --
     end if;

     --
     reg_ctrls.chkpoint := 700;
     --
     if  reg_ctrls.validacao_ok then
         --
         top_utl_rel.abrir_xml_execucao( p_xml_log => reg_ctrls.logs );
         --
         -- Tratamento do Cursor a ser executado
         --
         definir_cursor  ( p_rec_controles => reg_ctrls , p_info_relatorio => reg_config , p_tbl_paramSet => tab_paramSet ) ;
         abrir_cursor    ( p_rec_controles => reg_ctrls , p_info_relatorio => reg_config , p_tbl_paramSet => tab_paramSet , p_cur_entidade => cur_entidade ) ;
         --
         if  reg_ctrls.exe_cursor then
             --
             reg_ctrls.chkpoint := 1000;
             --
             -- Leitura do Cursor
             --
             loop
                 fetch cur_entidade bulk collect into tab_entidade limit reg_config.ctr_arraysize;
                 exit  when tab_entidade.count = 0;
                 --
                 reg_ctrls.linhas_lidas := reg_ctrls.linhas_lidas + tab_entidade.count;
                 --
                 for i in 1..tab_entidade.count loop
                     --
                     pipe row(tab_entidade(i));
                     reg_ctrls.linhas_emitidas := reg_ctrls.linhas_emitidas + 1;
                     --
                     --
                 end loop;
             end loop;
             --
             close cur_entidade;
             --
             top_utl_rel.gerar_xml_mensagem ( p_xml_log => reg_ctrls.logs
                                            , p_leitor  => top_utl_padrao.tpo_leitor_usuario
                                            , p_tipo    => top_utl_padrao.tpo_mensagem_informativa
                                            , p_texto   => 'Cursor fechado, '||reg_ctrls.linhas_lidas   ||' linhas lidas.'
                                            ) ;
             top_utl_rel.gerar_xml_mensagem ( p_xml_log => reg_ctrls.logs
                                            , p_leitor  => top_utl_padrao.tpo_leitor_usuario
                                            , p_tipo    => top_utl_padrao.tpo_mensagem_informativa
                                            , p_texto   => 'Cursor fechado, '||reg_ctrls.linhas_emitidas||' linhas emitidas.'
                                            ) ;
             --
             reg_ctrls.chkpoint := 5000;
         end if;
         --
         top_utl_rel.fechar_xml_execucao( p_xml_log => reg_ctrls.logs );
         --
     end if;
     --
     <<fechar_relatorio>>
     --
     top_utl_rel.fechar_xml_log( p_xml_log => reg_ctrls.logs );
     --
     -- Caso queria, pode mudar a mensagem conclusiva de execução do log
     --
     if     reg_ctrls.chkpoint     < 5000  then
            --
            reg_ctrls.ind_retorno := top_utl_padrao.tpo_mensagem_erro ;
            reg_ctrls.msg_retorno := 'Erro durante a execução, verificar detalhes do log de ocorrência.' ;
            --
     elsif  reg_ctrls.linhas_lidas = ( reg_ctrls.linhas_emitidas + reg_ctrls.linhas_filtradas ) then
            --
            reg_ctrls.ind_retorno := top_utl_padrao.tpo_mensagem_informativa ;
            reg_ctrls.msg_retorno := 'Processado com sucesso.' ;
            --
     else
           reg_ctrls.ind_retorno := top_utl_padrao.tpo_mensagem_erro ;
           reg_ctrls.msg_retorno := 'Processo deve ter parado no meio da leitura, pois não processou todas as linhas lidas. Verificar logs ou investigar o caso.' ;
     end if;
     --
     if reg_ctrls.ind_retorno = top_utl_padrao.tpo_mensagem_erro then
         top_utl_rel.gravar_fila_relatorio_log( p_num_seq_fila => p_num_seq_fila
                                              , p_xml_log      => reg_ctrls.logs
                                              , p_ind_retorno  => reg_ctrls.ind_retorno
                                              , p_msg_retorno  => reg_ctrls.msg_retorno
                                              ) ;
     end if;
     --
     return;
     --
  exception
  when others then
       if  reg_ctrls.chkpoint < 5000 then
           --
           top_utl_rel.gerar_xml_mensagem ( p_xml_log => reg_ctrls.logs
                                          , p_leitor  => top_utl_padrao.tpo_leitor_usuario
                                          , p_tipo    => top_utl_padrao.tpo_mensagem_informativa
                                          , p_texto   => top_utl_padrao.MsgErro
                                          ) ;
           --
           if    reg_ctrls.chkpoint < 500 then top_utl_rel.fechar_xml_conversao( p_xml_log => reg_ctrls.logs );
           elsif reg_ctrls.chkpoint < 700 then top_utl_rel.fechar_xml_validacao( p_xml_log => reg_ctrls.logs );
                                          else top_utl_rel.fechar_xml_execucao ( p_xml_log => reg_ctrls.logs );
           end   if;
           --
       end if;
       --
       top_utl_rel.fechar_xml_log( p_xml_log => reg_ctrls.logs );
       --
       if  reg_ctrls.chkpoint < 5000 then
           --
           reg_ctrls.ind_retorno := '3' ;
           reg_ctrls.msg_retorno := 'Erro durante a execução, verificar detalhes do log de ocorrência.' ;
           --
           top_utl_rel.gravar_fila_relatorio_log( p_num_seq_fila => p_num_seq_fila
                                                , p_xml_log      => reg_ctrls.logs
                                                , p_ind_retorno  => reg_ctrls.ind_retorno
                                                , p_msg_retorno  => reg_ctrls.msg_retorno
                                                ) ;
       end if;
       --
       return;
  end;
  --
  function  p_template_versao  return varchar2
  is
  begin
     return 'CVS>> SPEC: 1.4 - BODY: 1.16 - SD_390660 - [PROJETO ADESÃO] Acompanhamento Proposta Massificado';
  end;
end;

Below is how I pass the parameters:

select *
  from table(HES_REL_MATMED.get_dados(1234512345,
                                      '<?xml version="1.0" encoding="UTF-8"?><parametros><pTipoTabela></pTipoTabela>
                                      <pDataInicial>03/08/2015</pDataInicial><pDataFinal>05/08/2015</pDataFinal>
                                      <pClassificacaoSelecao></pClassificacaoSelecao><pTabelaSelecao></pTabelaSelecao>
                                      <pGrupoSelecao></pGrupoSelecao><pAutorizacaoPrevia></pAutorizacaoPrevia>
                                      </parametros> '))

The filter is in: DataInicial and DataFinal

    
asked by anonymous 18.01.2016 / 12:50

1 answer

1

The date you are passing may be the time, thus not bringing the expected return. Using oracle's Trunc function can solve your problem.

I did not test, but if you change the sections below:

Current:

|| rtrim (' WHERE DT_VIGENCIA >= to_date('''||p_tbl_paramSet('parametros').param('pDataInicial').ocorrencia(1).valor_string ||''',''dd/mm/yyyy'')')
|| rtrim ('   AND DT_VIGENCIA <= to_date('''||p_tbl_paramSet('parametros').param('pDataFinal').ocorrencia(1).valor_string ||''',''dd/mm/yyyy'')')

and

|| rtrim (' WHERE ITEM.DT_INCLUSAO BETWEEN to_date('''||p_tbl_paramSet('parametros').param('pDataInicial').ocorrencia(1).valor_string ||''',''dd/mm/yyyy'') ')
|| rtrim ('   AND to_date('''||p_tbl_paramSet('parametros').param('pDataFinal').ocorrencia(1).valor_string ||''',''dd/mm/yyyy'')');

Change:

|| rtrim (' WHERE TRUNC(DT_VIGENCIA) >= TRUNC(to_date('''||p_tbl_paramSet('parametros').param('pDataInicial').ocorrencia(1).valor_string ||''',''dd/mm/yyyy''))')
|| rtrim ('   AND TRUNC(DT_VIGENCIA) <= TRUNC(to_date('''||p_tbl_paramSet('parametros').param('pDataFinal').ocorrencia(1).valor_string ||''',''dd/mm/yyyy''))')

and

|| rtrim (' WHERE TRUNC(ITEM.DT_INCLUSAO) BETWEEN TRUNC(to_date('''||p_tbl_paramSet('parametros').param('pDataInicial').ocorrencia(1).valor_string ||''',''dd/mm/yyyy'')) ')
|| rtrim ('   AND TRUNC(to_date('''||p_tbl_paramSet('parametros').param('pDataFinal').ocorrencia(1).valor_string ||''',''dd/mm/yyyy''))');
    
18.01.2016 / 13:23