GARANTIR DESCONTO

Fórum Função CASE Simples e CASE Pesquisada #496900

07/10/2014

0

Pessoal, por favor, alguém poderia esclarecer a seguinte dúvida:

Qual a real diferença entre a função CASE Simples e CASE Pesquisada do Oracle?
No meu ponto de vista, tudo o que eu faço com Case Simples eu consigo fazer com Case Pesquisada e vice-versa.
Tem algum momento específico que terei que utilizar um método ou outro?
Segue um exemplo de ambas:

--CASE Simples
SELECT LAST_NAME, HIRE_DATE, 
       TRUNC(MONTHS_BETWEEN(SYSDATE,HIRE_DATE)/12) YEARS,
       TRUNC(MONTHS_BETWEEN(SYSDATE,HIRE_DATE)/60) "YEARS DIVIDED BY 5",
       CASE TRUNC(MONTHS_BETWEEN(SYSDATE,HIRE_DATE) / 60)
         WHEN 0 THEN 'Intern'
         WHEN 1 THEN 'Junior'
         WHEN 2 THEN 'Intermediate'
         WHEN 3 THEN 'Senior'
         ELSE 'Furniture'
       END LOYALTY
FROM EMPLOYEES
WHERE DEPARTMENT_ID IN (60,10);

--CASE Pesquisada
SELECT LAST_NAME, HIRE_DATE, 
      TRUNC(MONTHS_BETWEEN(SYSDATE,HIRE_DATE)/12) YEARS,
      TRUNC(MONTHS_BETWEEN(SYSDATE,HIRE_DATE)/60) YEARS,
      CASE
        WHEN TRUNC(MONTHS_BETWEEN(SYSDATE,HIRE_DATE)/60) < 1 THEN 'Intern'
        WHEN TRUNC(MONTHS_BETWEEN(SYSDATE,HIRE_DATE)/60) < 2 THEN 'Intern'
        WHEN TRUNC(MONTHS_BETWEEN(SYSDATE,HIRE_DATE)/60) < 3 THEN 'Intern'
        WHEN TRUNC(MONTHS_BETWEEN(SYSDATE,HIRE_DATE)/60) < 4 THEN 'Intern'
        ELSE 'Furniture'
      END LOYALTY
FROM EMPLOYEES
WHERE DEPARTMENT_ID IN (60,10);


Eu utilizo o Oracle 11g
Marcus Almeida

Marcus Almeida

Responder

Posts

07/10/2014

Jair N.

Bom Dia olha só, vendo que o princípio é o mesmo, mas sugestivamente diferente, nunca soube que se no uso do método, possa ocasionar resultados diferentes, apenas dando a chamada CASE a opção de como se deve utilizar. Acho que fica a critério e de acordo com a necessidade de cada um por sugestão seria a ordem dos fatores.
Responder

Gostei + 0

07/10/2014

Marcus Almeida

Surgiu a dúvida estudando para certificação, realmente não consegui ver diferencia na utilização de uma ou outra, talvez tenha um desempenho em processamento de grande quantidade de informações más ainda não sei se tem alguma regra de uso para cada tipo
Responder

Gostei + 0

24/11/2014

Marisiana Battistella

Interessante a tua pergunta Marcus!
Também gostaria de saber se existe alguma diferença...
A primeira coisa que pensei é que a diferença possa estar na execução do SQL, talvez o Oracle trate elas de forma diferente e talvez influencie em performance ou alguma coisa assim.
Será q tem fundamento isso?
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar