Aprenda PL/SQL

Tag Archive: Curiosidade

bug

Tem algumas coisas que estão praticamente enraizadas no mundo Oracle: me refiro a algumas práticas que quase todo mundo faz e que foi adotado como padrão. O texto abaixo não contém nenhuma nova feature do Oracle, nem é nenhuma novidade pra ninguém. Mas por incrível que pareça, eu vejo em quase todas empresas essa prática e isso normalmente gera problemas. Me refiro a utilização de um NVL pra fazer um filtro opcional na query. Abaixo está um exemplo:

SELECT *
FROM tabela
WHERE campo = NVL ( p_parametro1 , campo )

Quase todo programa tem um sistema de filtro como esse acima.
Se o usuário informar o p_parametro1, a query vai mostrar apenas as linhas cujo campo é igual ao p_parametro1.
Se o usuário não informar nada, cai no NVL, e ele faz join com a própria coluna, trazendo tudo.

Leia mais…




Pois é isso mesmo! A querida tabela do ORACLE que nos mostra o plano de execução dos SQLs hoje completa 21 anos!
Hoje eu fui olhar um plano de execução e me deparei com a seguinte mensagem:

SET AUTOTRACE ON
SELECT bla bla bla...

Execution Plan
----------------------------------------------------------

--------------------------------------------------------------
| Id  | Operation          | Name       | Rows  | Cost (%CPU)|
--------------------------------------------------------------
|   0 | SELECT STATEMENT   |            |     1 |   102   (0)|
|   1 |  SORT AGGREGATE    |            |     1 |            |
|   2 |   TABLE ACCESS FULL| TABELA     |  4322 |   102   (0)|
--------------------------------------------------------------

Note
-----
   - 'PLAN_TABLE' is old version

PLAN_TABLE is old version ???
Leia mais…




Esse post vai mais a título de curiosidade. Sabemos que os números primos são números naturais que podem ser divididos apenas por dois números naturais, o 1 (um) e ele mesmo. Pois a tempos que eu queria um SQL que retornasse esses números!
Leia mais…




Todos conhecem a função do Oracle que faz a potêcia: o POWER. Abaixo, vamos demonstrar como elevar números sem usar essa função.
Leia mais…




Sabemos que mudando o NLS_LANG do oracle, ele assume comportamentos diferentes. (Por exemplo, muda o formato da Data, muda o Ponto Decimal ou Vírgula Decimal, etc.) Mas uma coisa que as vezes passa despercebido é que o NLS_LANG também pode mudar a ORDEM das colunas:
Leia mais…




Sabemos que quando um variável ou um campo no Oracle está NULL, ele não pode ser simplesmente comparado a um outro valor, pois o resultado da compração também será false!
Leia mais…




Este caso é no mí­nimo curioso! É bem comum usarmos “IN” quando queremos que o banco considere várias opções para um determinado campo. Neste exemplo, vamos demonstrar que o ORACLE concatena espaços em branco em comparações com IN. Vamos aos exemplos:
Leia mais…