Banco de dados (24)

SQL injection no Oracle usando o tipo DATE via NLS_DATE_FORMAT

Seguindo a ideia passada no blog do Tom Kyte [1], é possível fazer sql injection via uma variável DATE no PL/SQL, isso por causa da possibilidade de alterar a formatação do tipo DATE, e isso pode ser feito tanto via ALTER SESSION, como via variável de ambiente.

Demonstrarei como poderíamos utilizar esse detalhe do Oracle (que não é um bug, mas uma falha na aplicação), para injetar SQL.

Importando dados eficientemente no SQLite

Alguém que já tentou carregar um dump de um banco de dados grande no SQLite deve ter percebido como é demorado para a carga ser efetuada.

Para detalhes em como o SQLite trabalha com locking, leia: http://www.sqlite.org/lockingv3.html

Identificando intervalos entre datas no MySQL

Seguindo uma dúvida postada no fórum iMasters, que é a respeito de como identificar os intervalos de meses em que não há registro para um determinado usuário (o que chamamos de GAPS), irei exemplificar como resolver este problema com uma simples abordagem.

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.!