ti-enxame.com

'condição' if-elseif-else no Oracle SQL

Gostaria de saber se existe a possibilidade de conseguir algo como

'if-elseif-else', eu sei que existe um 'case-when-then-else', mas ele verifica apenas uma condição de cada vez (se eu entendi corretamente). Como posso obter o cenário if-elseif-else no Oracle sql

7
user964147

Você pode usar if/else usando instruções de caso como esta.

SELECT ename, CASE WHEN sal = 1000 THEN 'Minimum wage'
                   WHEN sal > 1000 THEN 'Over paid'
                   ELSE 'Under paid'
              END AS "Salary Status"
FROM   emp;
18
ZKK

eu sei que existe um 'case-when-then-else', mas ele verifica apenas uma condição por vez

O que você está descrevendo é um caso SIMPLES. O Oracle tem dois tipos de casos: SIMPLE e SEARCHED (consulte aqui para obter mais informações http://docs.Oracle.com/cd/B19306_01/server.102/b14200/expressions004.htm )

SIMPLES

case A
  when 1 then 'foo'
  when 2 then 'bar'
  else ..
end

PESQUISADO

case
  when A=1 and B='A' then 'foo'
  when D + C =1 and B !='A' then 'Bar'
  else ..
end

você provavelmente deseja usar um caso pesquisado. Você pode usá-los em PL/SQL ou SQL. por exemplo, em SQL

select ..
  from table
 where case
         when A=1 and B='A' then 'foo'
         when D + C =1 and B !='A' then 'Bar'
         else ..
       end = 'foo'
1
DazzaL

Procure "Decodificar no Oracle"

decode( expression , search , result [, search , result]... [, default] )

É semelhante a "if-elseif-else"

Consulte: http://www.techonthenet.com/Oracle/functions/decode.php

NOTA: Faz apenas verificações de igualdade.

0
asifsid88