此语句用于根据多种情况选择执行路径。
CASE value-expression
WHEN [ constant | NULL ] THEN statement-list ...
[ WHEN [ constant | NULL ] THEN statement-list ] ...
[ ELSE statement-list ]
END CASE
CASE
WHEN [ search-condition | NULL] THEN statement-list ...
[ WHEN [ search-condition | NULL] THEN 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 表达式。 |
无。
无。
SQL/92 持久存储模块特性。Adaptive Server Anywhere 支持允许使用 WHEN NULL 的 CASE 语句。这是 SQL/92 标准的供应商扩展。
SQL/99 持久存储模块特性。Adaptive Server Anywhere 支持允许使用 WHEN NULL 的 CASE 语句。这是 SQL/92 标准的供应商扩展。
Sybase 不受 Adaptive Server Enterprise 支持。
下面的过程使用 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;
ENDSQL Anywhere Studio 9.0.2
版权所有 © 1989–2005 Sybase, Inc. 部分版权所有 © 2001–2005 iAnywhere Solutions, Inc. 保留所有权利。