Collection Contents 上一页 下一页 PDF

ASA SQL 参考

SQL 语句

CASE 语句


说明 

此语句用于根据多种情况选择执行路径。

语法 1 

CASE value-expression
WHEN [ constant | NULL ] THEN statement-list ...
WHEN [ constant | NULL ] THEN statement-list ] ...
ELSE statement-list ]
END CASE

语法 2 

CASE
WHEN [ search-condition | NULLTHEN statement-list ...
WHEN [ search-condition | NULLTHEN statement-list ] ...
ELSE statement-list ]
END CASE

用法 

语法 1    CASE 语句是控制语句,它允许您根据表达式的值选择要执行的 SQL 语句列表。 value-expression 是具有单值的表达式,它的值可以是字符串、数字、日期或其它 SQL 数据类型。如果 value-expression 的值存在匹配的 WHEN 子句,则执行 WHEN 子句中的 statement-list。如果没有合适的 WHEN 子句而有 ELSE 子句,则执行 ELSE 子句中的 statement-list。执行在 END CASE 后的第一个语句重新开始。

如果 value-expression 可以为空,使用 ISNULL 函数用不同的表达式替换 NULL value-expression

有关 ISNULL 函数的详细信息,请参见 ISNULL 函数 [数据类型转换]

语法 2    在这种格式下,执行 CASE 语句中第一个满足 search-condition 的语句。如果不满足 search-conditions,则执行 ELSE 子句。

如果表达式可以为 NULL,对第一个 search-condition 使用以下语法:

WHEN search-condition IS NULL THEN statement-list

有关 NULL 值的详细信息,请参见未知值:NULL

CASE 语句不同于 CASE 表达式 
不要混淆 CASE 语句与 CASE 表达式的语法。

有关 CASE 表达式的信息,请参见 CASE 表达式

权限 

无。

副作用 

无。

另请参见 
标准和兼容性 
示例 

下面的过程使用 CASE 语句,将示例数据库的产品表中列出的产品分为衬衣、帽子、短裤、未知几大类。

CREATE PROCEDURE ProductType (IN product_id INT, OUT type CHAR(10))
BEGIN
   DECLARE prod_name CHAR(20);
   SELECT name INTO prod_name FROM "DBA"."product"
   WHERE id = product_id;
   CASE prod_name
   WHEN 'Tee Shirt' THEN
      SET type = 'Shirt'
   WHEN 'Sweatshirt' THEN
      SET type = 'Shirt'
   WHEN 'Baseball Cap' THEN
      SET type = 'Hat'
   WHEN 'Visor' THEN
      SET type = 'Hat'
   WHEN 'Shorts' THEN
      SET type = 'Shorts'
   ELSE
      SET type = 'UNKNOWN'
   END CASE;
END

下面的示例使用语法 2 生成关于示例数据库中产品数量的消息。

CREATE PROCEDURE StockLevel (IN product_id INT)
BEGIN
   DECLARE qty INT;
   SELECT quantity INTO qty FROM product
   WHERE id = product_id;
   CASE
   WHEN qty < 30 THEN
      MESSAGE 'Order Stock' TO CLIENT;
   WHEN qty > 100 THEN
      MESSAGE 'Overstocked' TO CLIENT;
   ELSE
      MESSAGE 'Sufficient stock on hand' TO CLIENT;
   END CASE;
END

Collection Contents 上一页 下一页 PDF