oracle中if/else功能的實現的3種寫法

風靈使發表於2018-04-20

1、標準sql規範

一、單個IF
1if a=...  then
.........
end if;

2if a=... then
......
else
....
end if;

二、多個IF

if a=..  then
......
elsif a=..  then
....
end if;     
這裡中間是“ELSIF”,而不是ELSE IF 。這裡需要特別注意

2、decode函式

DECODE的語法:

DECODE(value,if1,then1,if2,then2,if3,then3,...,else)

表示如果value等於if1時,DECODE函式的結果返回then1,…,如果不等於任何一個if值,則返回else。

3、case when

case when a='1'then 'xxxx'
     when a='2' then 'ssss'
else
  'zzzzz'
end as

注意點:

1、以CASE開頭,以END結尾
2、分支中WHEN 後跟條件,THEN為顯示結果
3、ELSE 為除此之外的預設情況,類似於高階語言程式中switch case的default,可以不加
4、END 後跟別名


這是一個使用IF-THEN-ELSE語句的函式的例子:

CREATE OR replace FUNCTION Incomelevel (name_in IN VARCHAR2) 
RETURN VARCHAR2 
IS 
  monthly_value NUMBER(6); 
  ilevel        VARCHAR2(20); 
  CURSOR c1 IS 
    SELECT monthly_income 
    FROM   employees 
    WHERE  name = name_in; 
BEGIN 
    OPEN c1; 

    FETCH c1 INTO monthly_value; 

    CLOSE c1; 

    IF monthly_value <= 4000 THEN 
      ilevel := 'Low Income'; 
    ELSIF monthly_value > 4000 
          AND monthly_value <= 7000 THEN --邏輯與 
      ilevel := 'Avg Income'; 
    ELSIF monthly_value > 7000 
          AND monthly_value <= 15000 THEN 
      ilevel := 'Moderate Income'; 
    ELSE 
      ilevel := 'High Income'; 
    END IF; 

    RETURN ilevel; 
END; 

相關文章