SQLServerの再帰SQLで最大再帰数の指定

SQLServerで再帰SQLを実行すると最大再帰数に達してエラーになる現象が発生しました。

そのエラーの回避法を検討します。

スポンサーリンク

再帰SQLを実行すると最大再帰数に達してエラー

先日作成した記事で

SQLServerの再帰SQLで歯抜けの日付データを取得する
日付を管理しているテーブルから共通テーブル式と再帰SQLを使って歯抜けの日付データを取得する

エラーが発生しました。

日付を1年分にして再帰SQLを実行すると「ステートメントが終了しました。ステートメントの完了前に最大再帰数 100 に達しました。」とエラーが発生します。

どうやら無限ループ等が発生した場合のことを考慮して再帰SQLでは再起の出来る回数の上限値を設定されているようです。

この上限値を変更するには「MAXRECURSION」を指定します。

最大再帰数「MAXRECURSION」を使う

設定方法は

で上限値を設定します。

設定できる値は「0」から「32,767」までで、「0」は上限なしになります。

規定値は「100」です。

最大再帰数「MAXRECURSION」の指定方法

実際の指定方法は

になります。

タイトルとURLをコピーしました