当前位置: Oracle DBA培训网-优技培训 >> oracle培训 > Oracle培训教程 >

PL/SQL课程:条件控制case怎么用

PL/SQL课程:条件控制case怎么用

PL/SQL课程:条件控制case怎么用?CASE是一种选择结构的控制语句,可以根据条件从多个执行分支中选择相应的执行动作。也可以作为表达式使用,返回一个值。类似于C#中的switch语句。语法是:

语法格式:CASE

CASE [selector]

WHEN 表达式1 THEN 语句序列1

WHEN 表达式2 THEN 语句序列2

WHEN 表达式3 THEN 语句序列3

……

[ELSE 语句序列N]

END CASE;

语法解析:

如果存在选择器selector,选择器selector与WHEN后面的表达式匹配,匹配成功就执行THEN后面的语句。如果所有表达式都与selector不匹配,则执行ELSE后面的语句。

案例4:输入一个字母A、B、C分别输出对应的级别信息。

代码演示:CASE中存在selector,不返回值

DECLARE

      v_grade CHAR(1):=UPPER('&p_grade');  

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

               dbms_output.put_line('No such grade');

      END CASE;

END;

代码解析:

① & grade表示在运行时由键盘输入字符串到grade变量中。

② v_grade分别于WHEN后面的值匹配,如果成功就执行WHEN后的程序序列。

CASE语句还可以作为表达式使用,返回一个值。

代码演示:CASE中存在selector,作为表达式使用

DECLARE

      v_grade CHAR(1):=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 such grade'

      END;

      dbms_output.put_line('Grade:' ||v_grade||',the result is '||p_grade);

END;

代码解析:

① CASE语句可以返回一个结果给变量p_grade

PL/SQL还提供了搜索CASE语句。也就是说,不使用CASE中的选择器,直接在WHEN后面判断条件,第一个条件为真时,执行对应THEN后面的语句序列。

代码演示:搜索CASE

DECLARE

      v_grade CHAR(1):=UPPER('&grade');

      p_grade VARCHAR(20) ;

BEGIN

      p_grade :=

      CASE

           WHEN v_grade='A' THEN

               'Excellent'

           WHEN v_grade='B' THEN

               'Very Good'

           WHEN v_grade='C' THEN

               'Good'

           ELSE

               'No such grade'

      END;

      dbms_output.put_line('Grade:' ||v_grade||',the result is '||p_grade);

END;

技术沙龙MORE+

标签错误:<!-- #Label# labelId=20160707140604 moduleId=1 classId=12231768634 orderby=2 fields=url,title,u_info attribute= datatypeId=22192428132 recordCount=3 pageSize= <htmlTemplate><dt><img src="/images/index_26${index}.jpg" width="100" height="62" /><a href="$url" title="${title}">${title}</a><span>${api.left(u_info,60)}</span></dt></htmlTemplate> -->
我要参加技术沙龙