Doogie Notes

覚え書き

SQL Server ストアドプロシージャ 再帰呼出し

CREATE PROCEDURE <スキーマ>.<ストアド名>
	@PRM_COMPANY_CD    VARCHAR(4)
,	@RETURN_CD         INT OUTPUT
AS
BEGIN
	DECLARE @COMPANY_CD               VARCHAR(4);
	DECLARE @COMPANY_NM               VARCHAR(100);
	DECLARE @PROC_RETURN_CD           INT;

	DECLARE CUR_COMPANY CURSOR
	FOR
	SELECT
	    COMPANY_CD
	,   COMPANY_NM
	FROM
	    COMPANY_MST
	WHERE
	    COMPANY_CD = @PRM_COMPANY_CD
	ORDER BY
	    START_DATE
	;

	OPEN CUR_COMPANY;

	FETCH NEXT FROM CUR_COMPANY
	INTO @COMPANY_CD, @COMPANY_NM;

	WHILE @@FETCH_STATUS = 0
	BEGIN
	      ・
	      ・
	  <再帰呼出し>
	  EXEC <スキーマ>.<ストアド名>
	  	@COMPANY_CD
	  ,	@PROC_RETURN_CD OUTPUT
	      ・
	      ・
	    FETCH NEXT FROM CUR_COMPANY
		INTO @COMPANY_CD, @COMPANY_NM;
	END;

	CLOSE CUR_COMPANY;
	DEALLOCATE CUR_COMPANY;

END;

【参考サイト】
qa.atmarkit.co.jp