- 再帰的ストアドプロシージャの基本構造 再帰的なストアドプロシージャを実装するには、次の要素が必要です。
- 終了条件: 再帰処理を終了するための条件を定義します。
- 再帰ステップ: 再帰処理を実行するためのステップを定義し、自身を呼び出します。
- 再帰的ストアドプロシージャの例 以下に、従業員テーブルを使用して部署の階層構造を再帰的に辿るストアドプロシージャの例を示します。
CREATE PROCEDURE GetDepartmentHierarchy
@DepartmentID INT
AS
BEGIN
-- 終了条件: 部署IDが与えられた場合に処理を実行する
IF @DepartmentID IS NOT NULL
BEGIN
-- 現在の部署情報を取得
SELECT DepartmentID, DepartmentName
FROM Departments
WHERE DepartmentID = @DepartmentID
-- 再帰ステップ: 下位の部署を取得し、再帰的に処理を実行する
DECLARE @ChildDepartmentID INT
SELECT @ChildDepartmentID = DepartmentID
FROM Departments
WHERE ParentDepartmentID = @DepartmentID
EXEC GetDepartmentHierarchy @ChildDepartmentID
END
END
この例では、指定された部署IDの部署情報を取得し、その部署の下位の部署を再帰的に辿ります。再帰ステップでは、子部署のIDを取得し、再帰的にGetDepartmentHierarchy
ストアドプロシージャを呼び出して処理を繰り返します。終了条件として、部署IDが与えられていない場合は処理を終了します。
以上がSQL Serverにおける再帰的なストアドプロシージャの実装方法と例です。必要に応じて、この例を参考にして、特定の要件に合わせた再帰的な処理を実装してください。