2017-02-24 84 views
-5

請告訴我這段代碼有什麼問題? 我得到 「錯誤在第2行: ORA-00907:缺少右括號」爲下面的片段。請幫助我。SQL查詢將三角形分類爲等邊,等腰等

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; 
+0

請解釋一下你想要做什麼 - 你的代碼是充滿了語法錯誤... – Siyual

+0

應該不是三面等於平均isosoles?不「或」 - 「和」。 – duffymo

+0

Noooo,您不能在Oracle查詢中使用「IF-ELSE」語句。搜索「CASE」。而且在查詢中也不能'DBMS_OUTPUT.PUT_LINE'。 –

回答

2

請記住,CASE語句是爲了評估 - 第一個WHEN適合「獲勝」,並沒有進一步的評估條款作出。所以:

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. 
+0

謝謝@mathguy – Vish

+0

現在我使用的是我們的代碼,但仍然輸出錯誤。我不知道爲什麼。以下是我嘗試的挑戰: 也許你可以嘗試一下,如果可能的話: https://www.hackerrank.com/challenges/what-type-of-triangle – Vish

+0

@Vish - 「輸出錯誤」doesn不多說了。哪裏不對?向我們展示你輸入的三個數字,結果是什麼,然後我們可以討論它是對還是錯。 – mathguy

相關問題