SQLにおけるストアドプロシージャは、プリコンパイルされたSQLステートメントの集合体であり、効率的なデータベース操作を可能にします。特に、条件分岐を用いることで、柔軟なロジックを実装することができます。この記事では、ストアドプロシージャでの条件分岐の基本的な使い方を、具体的な例とともに詳しく解説します。
目次
ストアドプロシージャとは
ストアドプロシージャは、SQL Server、MySQL、Oracleなど、多くのリレーショナルデータベース管理システム(RDBMS)でサポートされています。一連のSQL命令をまとめて保存し、呼び出すことができる機能です。これにより、コードの再利用性が向上し、メンテナンスも容易になります。
条件分岐の基本
ストアドプロシージャ内で条件分岐を用いることで、特定の条件下で異なる処理を行うことができます。SQLにおける条件分岐には主に「IF…ELSE」や「CASE」があります。
IF…ELSE
IF…ELSE文は、条件が真か偽かによって、異なるSQLステートメントを実行します。
DELIMITER //
CREATE PROCEDURE SimpleIfElse(IN input INT)
BEGIN
IF input > 0 THEN
SELECT 'Input is greater than 0';
ELSE
SELECT 'Input is less than or equal to 0';
END IF;
END;
//
DELIMITER ;
CASE
CASE文は、複数の条件を指定できるため、より複雑な条件分岐が可能です。
DELIMITER //
CREATE PROCEDURE SimpleCase(IN input INT)
BEGIN
CASE
WHEN input > 0 THEN
SELECT 'Input is greater than 0';
WHEN input = 0 THEN
SELECT 'Input is zero';
ELSE
SELECT 'Input is less than 0';
END CASE;
END;
//
DELIMITER ;
条件分岐の具体的な使い方
在庫管理の例
条件分岐を用いて、在庫管理のロジックを実装する例を見てみましょう。
商品ID | 商品名 | 在庫数 |
---|---|---|
1 | りんご | 50 |
2 | バナナ | 30 |
3 | オレンジ | 20 |
ストアドプロシージャを使って、在庫数に応じて注文処理を行うロジックを考えます。
DELIMITER //
CREATE PROCEDURE CheckInventory(IN product_id INT)
BEGIN
DECLARE stock INT;
SELECT stock_quantity INTO stock FROM inventory WHERE id = product_id;
IF stock > 20 THEN
UPDATE inventory SET stock_quantity = stock - 1 WHERE id = product_id;
SELECT '注文完了';
ELSE
SELECT '在庫不足';
END IF;
END;
//
DELIMITER ;
このストアドプロシージャは、在庫数が20以上の場合は注文を受け付け、在庫を1減らします。それ以外の場合は、「在庫不足」と返します。
まとめ
ストアドプロシージャにおける条件分岐は、データベース処理を柔軟に制御する強力な手段です。この記事で解説した「IF…ELSE」や「CASE」を使いこなすことで、効率的かつ複雑なデータベース処理が可能になります。具体的な例を通じて、その使い方と可能性を探ってみてください。
created by Rinker
¥4,554
(2024/11/22 10:55:01時点 Amazon調べ-詳細)
コメント