Decode x Case

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (10)  (3)

Veja neste artigo como traalhar com o Case e o Decode, suas funcionalidades, as diferenças e qual o melhor.

 

Olá pessoal,

 

Neste artigo vou mostrar como trabalhar com o Case e o Decode, vou detalhar a funcionalidade, a diferença e qual o melhor.

 

1 – Funcionalidade: Temos duas formas de trabalhar com condição dentro de consultas em Oracle SQL, são elas o Case e o Decode. Os dois tem a mesma função, que é permitir de forma dinâmica e pratica como obter um retorno de uma coluna com base em uma condição, ou seja, ter a possibilidade de usar condições semelhantes ao IF-THEN-ELSE em consultas.

 

Assim, é possível definir de forma dinâmica e bem pratica o que será exibido na tela, evitando assim, consultas com retorno de colunas em branco, por exemplo.

 

2 – Diferença: O exemplo abaixo mostra o tipo de trabalho com o Case e o Decode. O Decode irá traduzir os valores passados por uma coluna com o esquema de codificação (1, 2, 3, 4) e irá retornar os valores decodificados (“Presidente”, “Diretor”, “Gerente”, “Funcionário”).

 

O Case é parecido com o Decode, eles tem uma forma de processo que vem lendo os valores da esquerda para a direita, avaliando um a um e quando encontra um valor verdadeiro, ele retorna o valor correspondente.

 

Por exemplo, você precisa saber qual o cargo referente ao código 2, então, ele irá pesquisar esse valor e quando achar, retornará o valor equivalente, ou seja, “Diretor”.

Qualquer expressão feita com o Case poderá ser feito com o Decode, mas é difícil ter a mesma flexibilidade e possivelmente, será desgastante escrever grandes códigos com o Decode. A Diferença entre os dois é praticamente essa, que na verdade, faz com que o Case seja melhor de se trabalhar.

Exemplos:

Decode

Case Simples

Case com Pesquisa

SELECT

  DECODE

  (

    vCargo,

    1, 'Presidente',

    2, 'Diretor',

    3, 'Gerente',

       'Funcionário'

  )

FROM dual;

SELECT

  CASE

    vCargo

    WHEN 1 

      THEN 'Presidente'

    WHEN 2 

      THEN 'Diretor'

    WHEN 3

      THEN 'Gerente'

    ELSE   'Funcionário'

  END

FROM dual;

SELECT

  CASE

    WHEN vCargo = 1

      THEN 'Presidente'

    WHEN vCargo = 2

      THEN 'Diretor'

    WHEN vCargo = 3

      THEN 'Gerente'

    ELSE 'Funcionário'

  END

FROM dual;

 

 

  

3 – Case x Decode, Quem vence?: Implementado na versão Oracle 8.1.6, o Case é o melhor. Ele é mais flexível, tem uma melhor performance de execução, é mais fácil para leitura e escrita e conseqüentemente é mais fácil de eliminar erros e manter uma codificação mais elegante.

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?