语法 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 DBA.ProductType( @product_ID INTEGER,@TYPE CHAR(10) OUTPUT ) AS
BEGIN
DECLARE @prod_name CHAR(20)
SELECT Name INTO @prod_name FROM Products
WHERE ID = @product_ID
IF @prod_name
= 'Tee Shirt'
SET @TYPE = 'Shirt'
ELSE IF @prod_name
= 'Sweatshirt'
SET @TYPE = 'Shirt'
ELSE IF @prod_name
= 'Baseball Cap'
SET @TYPE = 'Hat'
ELSE IF @prod_name
= 'Visor'
SET @TYPE = 'Hat'
ELSE IF @prod_name
= 'Shorts'
SET @TYPE = 'Shorts'
ELSE
SET @TYPE = 'UNKNOWN'
END;
以下示例使用语法 2 生成关于 SQL Anywhere 示例数据库中产品数量的消息。
CREATE PROCEDURE DBA.StockLevel( @product_ID INTEGER ) AS
BEGIN
DECLARe @qty INTEGER
SELECT Quantity INTO @qty FROM Products
WHERE ID = @product_ID
IF @qty < 30
MESSAGE 'Order Stock' TO CLIENT
ELSE IF @qty > 100
MESSAGE 'Overstocked' TO CLIENT
ELSE
MESSAGE 'Sufficient stock on hand' TO CLIENT
END;