加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

oracle中if/else功能的实现的3种写法

发布时间:2020-12-12 13:58:53 所属栏目:百科 来源:网络整理
导读:1、标准sql规范 一、单个IF 1 、 if a= ... then.........end if ; 2 、 if a= ... then...... else ....end if ;二、多个IF if a=.. then......elsif a=.. then....end if ; 这里中间是“ELSIF”,而不是ELSE IF 。这里需要特别注意 2、decode函数 DECODE的

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;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读