SQL 过程中的 CASE 语句
可使用 CASE 语句来根据条件满足状态而有条件进入某个逻辑。
有两种类型的 CASE 语句:
- 简单 CASE 语句:用于根据字面值进入某个逻辑
- 搜索式 CASE 语句:用于根据表达式的值进入某个逻辑
CASE 语句的 WHEN 子句定义满足条件时用于确定控制流的值。
以下是带有简单 CASE 语句 WHEN 子句的 CASE 语句的 SQL 过程示例:
CREATE PROCEDURE UPDATE_DEPT (IN p_workdept)
LANGUAGE SQL
BEGIN
DECLARE v_workdept CHAR(3);
SET v_workdept = p_workdept;
CASE v_workdept
WHEN 'A00' THEN
UPDATE department SET deptname = 'D1';
WHEN 'B01' THEN
UPDATE department SET deptname = 'D2';
ELSE
UPDATE department SET deptname = 'D3';
END CASE
END以下是带有搜索式 CASE 语句 WHEN 子句的 CASE 语句的示例:
CREATE PROCEDURE UPDATE_DEPT (IN p_workdept)
LANGUAGE SQL
BEGIN
DECLARE v_workdept CHAR(3);
SET v_workdept = p_workdept;
CASE
WHEN v_workdept = 'A00' THEN
UPDATE department SET deptname = 'D1';
WHEN v_workdept = 'B01' THEN
UPDATE department SET deptname = 'D2';
ELSE
UPDATE department SET deptname = 'D3';
END CASE
END上面提供的示例逻辑上是等价的,但要注意的是,带有搜索式 CASE 语句 WHEN 子句的 CASE 语句功能非常强大。可在其中使用任何受支持 SQL 表达式。这些表达式可包含变量、参数、专用寄存器及其他对象的引用。