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.

Tags:,
Petter Rafael
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.

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Junte-se a 323 outros assinantes

Busca

agosto 2020
DSTQQSS
 1
2345678
9101112131415
16171819202122
23242526272829
3031 

Categorias