Função CASE Simples e CASE Pesquisada
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:
Eu utilizo o Oracle 11g
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
Curtidas 0
Respostas
Jair N.
07/10/2014
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.
GOSTEI 0
Marcus Almeida
07/10/2014
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
GOSTEI 0
Marisiana Battistella
07/10/2014
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?
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?
GOSTEI 0