Calendário em PL/SQL
[ad#texto]
Pesquisando alguns códigos PL/SQL que eu tinha guardado em meu computador, achei um bem interessante, nem me lembro quando foi que o utilizei, porém o pequeno trecho de código PL/SQL fornece uma visão mensal em forma de calendário de acordo com o mês e ano informado como parâmetro.
Segue o código:
select
segunda,
terca,
quarta,
quinta,
sexta,
sabado,
domingo
from (select
Min(Decode(sem,1,d)) segunda,
Min(Decode(sem,2,d)) terca,
Min(Decode(sem,3,d)) quarta,
Min(Decode(sem,4,d)) quinta,
Min(Decode(sem,5,d)) sexta,
Min(Decode(sem,6,d)) sabado,
Min(Decode(sem,7,d)) domingo,
d-sem semana
from (select
Decode(To_Number(To_Char(To_Date(LEVEL||'/'||:p_mes_ano,'dd/mm/yyyy'),'d')),1,7,To_Number(To_Char(To_Date(LEVEL||'/'||:p_mes_ano,'dd/mm/yyyy'),'d'))-1) sem,
level d
from dual
connect by level <= To_Number(To_Char(last_day(To_Date(:p_mes_ano,'mm/yyyy')),'dd')) )
group by d-sem
order by semana)
O código é simples, didático (fácil de compreender e alterar) e pode ser utilizado para formar calendários em suas aplicações Oracle.