语法 1
CASE 语句是一个控制语句,可用于根据表达式的值选择要执行的 SQL 语句列表。 value-expression 是具有单值的表达式,它的值可以是字符串、数字、日期或其它 SQL 数据类型。如果 value-expression 的值存在匹配的 WHEN 子句,则执行 WHEN 子句中的 statement-list。如果没有合适的 WHEN 子句而有 ELSE 子句,则执行 ELSE 子句中的 statement-list。执行过程从 END CASE 之后的第一个语句开始继续。
以下过程使用 CASE 语句,将 SQL Anywhere 示例数据库 Products 表中列出的产品分为衬衣、帽子、短裤或未知几大类。
CREATE PROCEDURE ProductType (IN product_ID INT, OUT type CHAR(10))
BEGIN
DECLARE prod_name CHAR(20);
SELECT Name INTO prod_name FROM Products
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 生成关于 SQL Anywhere 示例数据库中产品数量的消息。
CREATE PROCEDURE StockLevel (IN product_ID INT)
BEGIN
DECLARE qty INT;
SELECT Quantity INTO qty FROM Products
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;