estou enfrentando uma dificuldade na construção de um sql.
A ideia desse sql é que ele construa os links que ficarão no menu de um blog que direciona para uma pagina com as noticias referentes ao mês indicado.
O pl/sql desenvolvido e de uma aplicação apex, por isso o link aparece dessa forma.
Me disponho para qualquer dúvida e desde já agradeço a ajuda.
declare
dataini date;
datafim date;
intervalo number;
cont number;
begin
--Seleciona o primeiro dia da tabela DATA_CADASTRO onde o COD é 1
select trunc(data_cadastro,'month') into dataini
from noticia
where cod = 1;
--Seleciona o primeiro dia da tabela DATA_CADASTRO onde o COD é o ultimo
select trunc(data_cadastro,'month') into datafim
from noticia
WHERE cod=(SELECT max(cod) FROM noticia);
--Seleciona a diferença entre as variaveis datafim e dataini
select months_between(datafim,dataini) into intervalo
from dual;
if intervalo = 0 then
--Link que aparecerá no menu, onde P13_DATA_INICIAL recebe o primeiro dia do mês
--é P13_DATA_FINAL recebe o ultimo dia do mesmo mês
--to_char(sysdate, 'Month yyyy') é o nome que aparecerá no link
select '<a href="f?p=xxxx:13:&APP_SESSION.::NO::P13_DATA_INICIAL,P13_DATA_FINAL:'
|| to_date('01/'||to_char(sysdate,'mm/yyyy'),'dd/mm/yyyy') || '%2C'
|| to_date(sysdate, 'dd/mm/yyyy') || '">' || to_char(sysdate, 'Month
yyyy') || '</a>' as Selecione_sua_Noticia_por_Data
from dual;
else
--Essa parte do link sempre será fixa
select '<a href="f?p=2780:13:&APP_SESSION.::NO::P13_DATA_INICIAL,P13_DATA_FINAL:'
|| to_date('01/'||to_char(sysdate,'mm/yyyy'),'dd/mm/yyyy') || '%2C'
|| to_date(sysdate, 'dd/mm/yyyy') || '">' || to_char(sysdate, 'Month
yyyy') || '</a>'
for cont 1..intervalo loop
--Essa parte do link muda a quantidade que a função ADD_MONTHS irá
subtrair do mês
|| '<a href="f?p=xxxx:13:&APP_SESSION.::NO::P13_DATA_INICIAL,P13_DATA_FINAL:'
|| add_months(to_date('01/'||to_char(sysdate,'mm/yyyy'),'dd/mm/yyyy'),-(CONT))
|| '%2C' || last_day(add_months(to_date('01/'||to_char(sysdate,'mm/yyyy'),'dd/mm/yyyy'),-(CONT)))
|| '">' || to_char(add_months(current_date,-(CONT)), 'Month yyyy') ||
'</a>' || '<br>'
end loop;
--Essa parte do link também é fixa
as Selecione_sua_Noticia_por_Data
from dual
end if;
end;
Att,
Rafael R