Criação de link através de pl/sql e html

Oracle Application Express - web application development tool (antigamente conhecido como Oracle HTML-DB)
Responder
Rafael_Santos
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 72
Registrado em: Sex, 18 Nov 2011 4:51 pm

Caros colegas,
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.

Selecionar tudo

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;
Como disse, sou novo no desenvolvimento apex, e na área de desenvolvimento em geral, caso tenha algum erro de logica ou sintaxe, por gentileza, me corrijam.

Att,

Rafael R
chunning
Rank: Programador Pleno
Rank: Programador Pleno
Mensagens: 41
Registrado em: Seg, 28 Mar 2011 11:39 am
Localização: Feliz - RS

Olá Rafael!
Dê uma olhada no link:
http://apex.oracle.com/pls/otn/f?p=3151 ... 121606::NO

Section VII - Dynamic PL/SQL Region

Creio que ali tenha um exemplo do que você quer fazer.

Abraço.
Rafael_Santos
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 72
Registrado em: Sex, 18 Nov 2011 4:51 pm

Obrigado pela ajuda, mas acabei usando um sql que reuni DISTICT(to_char(data_cadastro, 'month,YYYY')) algo parecido com isso...

Agradeço a atenção
Rafael_Santos
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 72
Registrado em: Sex, 18 Nov 2011 4:51 pm

Olá caros(as),

estou voltando aqui para melhorar mostrar o código que implementei para solução desse problema.

Selecionar tudo

select distinct(to_char(data_cadastro,'Month yyyy'))
as "Mês"
from noticia;
este código aparece o mês e ano assim:
Janeiro 2012
Fevereiro 2012
etc.
Como estou usando APEX não precisei concatenar link nem usar begin e end, mas se fosse necessário, bastaria utilizar algo parecido com isso

Selecionar tudo

begin
select '<a href"#">' || distinct(to_char(data_cadastro,'Month yyyy')) || '</a>'
as "Mês"
from noticia;
end;
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 9 visitantes