好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Oracle PL / SQL CASE 语句

在CASE语句中使用两种类型的表达式:简单和搜索。

 

简单CASE表达式

一个简单的CASE语句根据单个表达式的结果选择要执行的PL / SQL语句的几个序列中的哪一个。

简单CASE语句采用以下形式:

 
     CASE expression 
     WHEN result1 THEN 
        statements1 
     WHEN result2 THEN 
        statements2 
     ... 
     ELSE 
        statements_else 
     END CASE;  

 

实例

一个简单的CASE表达式从一个或多个选项中选择一个结果,并返回结果。

 DECLARE
  grade CHAR(1) := 'A'; 
  v_result VARCHAR2(20); 
BEGIN 
  v_result := 
    CASE grade 
      WHEN 'A' THEN 'Excellent' 
      WHEN 'B' THEN 'Very Good' 
      WHEN 'C' THEN 'Good' 
    END; 
  DBMS_OUTPUT.PUT_LINE (v_result); 
END; 
/  

上面的代码生成以下结果:

可选的ELSE子句与IF语句中的ELSE子句的工作方式相同。

如果选择器的值由WHEN子句覆盖,那么将执行ELSE子句。

如果未提供ELSE子句且没有WHEN子句匹配,则表达式将返回NULL。

 

搜索CASE表达式

搜索的CASE表达式允许您测试不同的条件,而不是将单个表达式与各种值进行比较。

搜索的CASE表达式没有选择器。

搜索的CASE语句评估布尔表达式的列表,当它找到一个计算结果为TRUE的表达式时,执行与该表达式相关联的一系列语句。

搜索的CASE语句具有以下形式:

 
     CASE 
     WHEN expression1 THEN 
        statements1 
     WHEN expression2 THEN 
        statements2 
     ... 
     ELSE 
        statements_else 
     END CASE; 
      

 

实例2

 
     CASE 
     WHEN salary >= 100 AND salary <=200 THEN 
        raise_salary(employee_id, 1500); 
     WHEN salary > 200 AND salary <= 400 THEN 
        raise_salary(employee_id, 1000); 
     WHEN salary > 400 THEN 
        raise_salary(employee_id, 500); 
     ELSE 
        raise_salary(employee_id, 0); 
     END CASE;  

 

嵌套CASE语句

CASE语句可以嵌套为IF语句。

 
     CASE 
     WHEN salary >= 100 THEN 
        CASE 
        WHEN salary <= 200 THEN 
           raise_salary(employee_id, 1500); 
        WHEN salary > 400 THEN 
           raise_salary(employee_id, 500); 
        WHEN salary > 200 THEN 
           raise_salary(employee_id, 1000); 
        END CASE; 
     WHEN salary < 100 THEN 
        raise_salary(employee_id,0); 
     END CASE;  

查看更多关于Oracle PL / SQL CASE 语句的详细内容...

  阅读:33次

上一篇

下一篇

第1节:Oracle PL / SQL CASE 语句    第2节:Oracle PL / SQL CHAR VARCHAR2    第3节:Oracle PL / SQL INTERVAL数据类型    第4节:Oracle PL / SQL loop循环    第5节:Oracle PL / SQL for loop循环    第6节:Oracle PL / SQL goto 语句    第7节:Oracle PL / SQL update更新数据    第8节:Oracle PL / SQL包    第9节:Oracle PL / SQL 存储过程    第10节:Oracle PL / SQL 函数    第11节:Oracle PL / SQL变量    第12节:Oracle PL / SQL变量范围    第13节:Oracle PL / SQL TIMESTAMP数据类型    第14节:Oracle PL / SQL 聚合函数大全    第15节:Oracle PL/SQL Views 视图    第16节:Oracle PL / SQL 表 table    第17节:Oracle PL/SQL Delete删除数据    第18节:Oracle PL/SQL Select 查询    第19节:Oracle PL/SQL 教程    第20节:Oracle PL / SQL注释    第21节:Oracle PL / SQL触发器Triggers    第22节:Oracle PL / SQL变量值    第23节:Oracle PL / SQL块结构    第24节:Oracle PL / SQL关联数组    第25节:Oracle PL / SQL文字    第26节:Oracle PL / SQL参数    第27节:Oracle PL / SQL运算符    第28节:Oracle PL/SQL NUMBER    第29节:Oracle PL/SQL if 语句    第30节:Oracle PL/SQL while循环    第31节:Oracle PL / SQL约束    第32节:Oracle PL / SQL 插入insert    第33节:Oracle PL / SQL数据类型    第34节:PL / SQL 分析函数大全