Oracle: Retornando dados através de uma função

Mais uma beleza de recurso do Oracle a ser testado! Chama-se Table Function, segue a definição dada pela documentação [1]:

Oracle9i's table functions provide the support for pipelined and parallel execution of transformations implemented in PL/SQL, C, or Java. Scenarios as mentioned earlier can be done without requiring the use of intermediate staging tables, which interrupt the data flow through various transformations steps.

Deletando N últimas linhas no MySQL e no Oracle

Seguindo a idéia apresentada em um tópico de um fórum, onde foi solicitada uma solução para deleção de N últimas linhas de uma tabela no MySQL. A questão é bem simples de resolver, principalmente porque o MySQL fornece tanto ORDER BY como LIMIT para o DELETE, isso mesmo, ORDER BY no DELETE!

Assim fica mole então né? Vamos ao exemplo removendo as últimas 5 linhas de uma tabela através de um campo de valor único crescente.!

Thread-local storage

Thread-local storage (TLS) nada mais é do que um método para tornar local para uma thread uma variável global ou estática. As vezes isto é necessário, como toda variável global e estática compartilham o mesmo endereço em cada thread em um processo. Diversas linguagens fornecem meios de tratar tal situação, vejamos como sanar esta questão em C usando o GCC.

Oracle: Criando índice virtual

Como de costume, cada vez mais acho recursos super interessantes no Oracle. Dessa vez, trata-se da criação de índice virtual, que é a criação de índice sem storage para a árvore do mesmo. O banco simplesmente simula o acesso como se houvesse o índice real. A utilidade de tal recurso sem dúvida é para possibilitar o teste do comportamento do CBO quanto ao uso do índice, principalmente em uma tabela onde há uma grande massa de dados, o que tomaria bastante tempo e disco se não fosse virtual.

Oracle: Obtendo dados hierarquicamente

Mais um grande ajuda provida pelo Oracle, é a possibilidade de trazer os dados de forma hierárquica. Para isso, usamos o comando START WITH ... CONNECT BY PRIOR ..., que funciona da seguinte forma [1]: