SQL プロシージャーの CASE ステートメント
CASE ステートメントを使用して、満たさなければならない条件の状況に基づいて、条件付きで特定の論理を開始することができます。
CASE ステートメントには、次の 2 つのタイプがあります。
- 単純 CASE ステートメント (Simple CASE statement): リテラル値に基づいて特定の論理を開始するのに使用します。
- 検索 CASE ステートメント (Searched CASE statement): 式の値に基づいて特定の論理を開始するのに使用します。
CASE ステートメントの WHEN 節は、制御のフローを決定するために満たしていなければならない値を定義します。
simple-case-statement-when-clause を使用した 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
ENDsearched-case-statement-when-clause を使用した 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上記の 2 つのどちらの例も論理的には同等ですが、searched-case-statement-when-clause を使用する CASE ステートメントは非常に強力になりうることに注意することが重要です。 ここでは、サポートされている任意の SQL 式を使用することができます。 この式では、変数、パラメーター、特殊レジスター、その他に対する参照を使用することができます。