oracle 条件控制 case when

格式一:
CASE  条件表达式
  WHEN 条件表达式结果1 THEN 
     语句段1
  WHEN 条件表达式结果2 THEN
     语句段2
  ......
  WHEN 条件表达式结果n THEN
     语句段n
  [ELSE 条件表达式结果]
END;


格式二
CASE 
  WHEN 条件表达式1 THEN
     语句段1
  WHEN 条件表达式2 THEN
     语句段2
  ......
  WHEN 条件表达式n THEN 
     语句段n
  [ELSE 语句段]
END;

例子1 对应格式一:

 

create or replace procedure p_test_casewhen is
  V_grade     char(1) := 'A';
  V_appraisal VARCHAR2(20);
begin
  V_appraisal := CASE v_grade
                   WHEN 'A' THEN
                    'Excellent'
                   WHEN 'B' THEN
                    'Very Good'
                   WHEN 'C' THEN
                    'Good'
                   ELSE
                    'No such grade'
                 END;
  DBMS_OUTPUT.PUT_LINE('Grade:' || v_grade || '  Appraisal: ' ||
                       v_appraisal);
end p_test_casewhen;


例子2 对应格式二

 

 

create or replace procedure p_test_casewhen is
  v_name      emp.ename%TYPE;
  v_job       emp.job%TYPE;
  v_sal       emp.sal%TYPE;
  v_sal_raise NUMBER(3, 2);
begin
  SELECT ename, job, sal
    INTO v_name, v_job, v_sal
    FROM emp
   WHERE empno = '7698';
  CASE
    WHEN v_job = 'CLERK' THEN
      IF v_sal < 3000 THEN
        v_sal_raise := .08;
      ELSE
        v_sal_raise := .07;
      END IF;
    WHEN v_job = 'SALESMAN' THEN
      IF v_sal < 4000 THEN
        v_sal_raise := .06;
      ELSE
        v_sal_raise := .05;
      END IF;
    WHEN v_job = 'MANAGER' THEN
      IF v_sal < 3500 THEN
        v_sal_raise := .04;
      ELSE
        v_sal_raise := .03;
      END IF;
    ELSE
      DBMS_OUTPUT.PUT_LINE('该岗位不涨工资: ' || v_job);
  END CASE;
  if v_sal_raise is not null then
    DBMS_OUTPUT.PUT_LINE(v_name || '的岗位是' || v_job || '、的工资是' || v_sal ||
                         '、工资涨幅是' || v_sal_raise);
  end if;
end p_test_casewhen;

 

 

 

 

 

 

 

 

  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值