0
In my table/base there is data for the day 05/08/2015
, happens that when I pass a date filter for the same day, it doesn’t work, it returns empty. If I pass like this: 04/08/2015
and 05/08/2015
doesn’t work either. It only works like this: 04/08/2015
and 06/08/2015
, remembering that there is only data on the day 05/08/2015
.
I am suspicious that it is the matter of the hour. This runs on a packege
and there’s a procedure inside that does this. The parameters come through an xml. I’m getting it because I don’t know package well and etc..
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 the way 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
Most likely your query is mounting
dataInicial > valor1 AND dataFinal < valor2
, what you need isdataInicial >= valor1 AND dataFinal <= valor2
– Edson Horacio Junior
Try putting the date in the XML format 'yyyy-mm-dd'. Another attempt is to put the time in your query, getting "yyyy-mm-dd hh:mi", where the initial date is '2016-01-17 00:00:00' and the end date '2016-01-18' or '2016-01-17 23:59'.
– Andre Mesquita