plsq块条件控制和case

来源:互联网 发布:机顶盒有线网络设置 编辑:程序博客网 时间:2024/05/20 20:20

四、条件控制

  一、条件控制

    if 条件 then 

结构体 (elsif,else)

end if;

1、wpq工资如果大于900奖金发800

DECLARE

     newSal emp.sal%TYPE;

BEGIN

     SELECT sal INTO newSAL FROM emp where ename=wpq;  

   

     IF newSal>900 THEN     --如果条件成立则执行THEN后面的内容

     update emp Set COMM=800 name where ename=wpq;

     END IF;

 

     dbms_output.put_line(newSal);

END;  

2、Elsif:工资如果大于1500奖金发100,大于900800,其他400

DECLARE

  newSal emp.sal%TYPE;

BEGIN

  SELECT sal INTO newSal from emp WHERE ENAME='mary';

  IF newSal>1500 THEN

    UPDATE emp SET comm=100 WHERE ENAME='mary';

  ELSIF newSal>900 THEN

    UPDATE emp SET comm=800 WHERE ENAME='mary'

  ELSE

    UPDATE emp SET comm=400 WHERE ename='mary';

END IF;

END;    

  

 二、CASE

--CASE[selector]

-- WHEN 表达式1 THEN 语句序列1  

-- WHEN 表达式2 THEN 语句序列2

1、实例:

DECLARE

   v_grade CHAR(1):=UPPER('&agrade'); --upper(&agrade)输入一个字符

BEGIN

  CASE v_grade

    WHEN 'A' THEN

       dbms_output.put_line('Excellent');

    WHEN 'B' THEN

       dbms_output.put_line('Very Good');

    WHEN 'C' THEN

      dbms_output.put_line('Good');

    ELSE--注意这里用else

       dbms_output.put_line('NO such grade');

   END CASE;

    END;  

2、CASE做表达式使用:

DECLARE

   v_grade CHAR(1):=UPPER('&grade');--upper(&grade)输入字符函数

   p_grade VARCHAR(20);

BEGIN

   p_grade:= 

   CASE v_grade 

     WHEN 'A' THEN

       'Excellent'

     WHEN 'B' THEN 

       'Very Good'   

     WHEN 'C' THEN

       'Good'

     ELSE

       'no'  

   end ;--注意这里是end 而不是end case

    dbms_output.put_line(p_grade);

END;

0 0
原创粉丝点击