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.
ViamaisBLOG
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.