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.

Petter Rafael

Desenvolvedor Web atua com as tecnologias Java e PHP apoiadas pelos bancos de dados Oracle e MySQL. Além dos ambientes de desenvolvimento acima possuiu amplo conhecimento em servidores Apache/Tomcat, Photoshop, Arte & Foto, Flash e mais uma dezena de ferramentas e tecnologias emergentes. Atualmente colabora com o Viablog escrevendo sobre programação e tecnologia.