Please tell me what is wrong in this code? I’m getting “ERROR at line 2: ORA-00907: missing right parenthesis” for the following snippet. Please help me out.
x
select (
IF (A = B or B = C or C = A) THEN
DBMS_OUTPUT.PUT_LINE('Isosceles')
ELSIF (A=B and B=c) THEN
DBMS_OUTPUT.PUT_LINE('Equilateral')
ELSIF (A != B) and (B != C) and (A+B>C or B+C>A or A+C>B)THEN
DBMS_OUTPUT.PUT_LINE('Scalene')
ELSE
DBMS_OUTPUT.PUT_LINE('Not A Triangle')
END IF
)
from triangles;
Advertisement
Answer
Keep in mind that CASE statements are evaluated IN ORDER – the first WHEN clause that fits “wins” and no further evaluation is made. So:
with
triangles ( A, B, C ) as (
select 20, 20, 23 from dual union all
select 20, 20, 20 from dual union all
select 20, 21, 22 from dual union all
select 13, 14, 30 from dual
)
select A, B, C,
case
when A+B <= C or B+C <= A or C+A <= B then 'Not A Triangle'
when A = B and B = C then 'Equilateral'
when A = B or B = C or A = C then 'Isosceles'
else 'Scalene'
end as classification
from triangles
;
A B C CLASSIFICATION
--- --- --- --------------
20 20 23 Isosceles
20 20 20 Equilateral
20 21 22 Scalene
13 14 30 Not A Triangle
4 rows selected.