2008-06-16

Missing values from a sequence generated column

If we have a column that is a sequence generated value column from a table we can get holes in the values (due to several issues that are common known).
Here is a code that shows that holes using as example a table named my_table and a column id
SELECT id,
       next_id,
       DECODE (next_id, id + 1, '',
                        DECODE (id + 1, next_id - 1, TO_CHAR (id + 1),
                                        TO_CHAR (id + 1)
                                        || '-'
                                        || TO_CHAR (next_id - 1)))
       missing_values
FROM   (SELECT id,
               LEAD (id, 1) over (ORDER BY id) AS next_id
        FROM   my_table)
WHERE  next_id IS NOT NULL
   AND DECODE (next_id, id + 1, '',
                        DECODE (id + 1, next_id - 1, TO_CHAR (id + 1),
                                        TO_CHAR (id + 1)
                                        || '-'
                                        || TO_CHAR (next_id - 1))) IS NOT NULL



An example of the output:

22     42     23-41
42     44     43
44     46     45
46     62     47-61
62     64     63
64     68     65-67

2008-06-12

Verificação do tempo

Mandaram-me um mail com esta fotografia de um sistema "rudimentar" de previsão do tempo. Eu acho que é mais uma verificação do tempo.
Pedra Molhada -> está a chover
Pedra Seca -> não está a chover
Sombra no chão -> está sol
Branco em cima -> está a nevar
Não se pode ver a pedra (nem o cartaz já agora) -> nevoeiro
Pedra a baloiçar -> está vento
Pedra a saltar para cima e para baixo -> terramoto
Pedra desapareceu -> Tornado (ou depois de um tornado)

Actualização: no Parque da Lavandeira em Gaia existe perto da entrada uma versão portuguesa desta pedra

2008-06-06

Thing I really like in 11g: ADD COLUMN

In Oracle 11g if you want to alter add a column to a table and that column:
- allows NULLs and doesn't have DEFAULT value
- doesn't allows NULLS (NOT NULL column) and has DEFAULT value
- its a virtual column

you can do it without fear even if the tables are in use...it doesn't needs to lock then!