【SQL-Server】WITH句を使った再帰処理で連番の生成 WITH句 の中で自分自身を読んでやれば再帰的に処理が行われる様です。 以下のSQLでは連番を生成する処理を再帰処理で行っています。 WITH SEQLIST(SEQNO) as( SELECT 1 UNION ALL SELECT SEQNO + 1 FROM SEQLIST WHERE SEQNO このSQLを実行すると以下の様になります。 但し、このままでは100件までの再帰処理しかできない様で、「SEQNO メッセージ 530、レベル 16、状態 1、行 1 ステートメントが終了しました。ステートメントの完了前に最大再帰数 100 に達しました。 このエラーも OPTION (MAXRECURSION nnn) として指定し「nnn」に101以上を指定すればできることになります。 WITH SEQLIST(SEQNO) as( SELECT 1 UNION ALL SELECT SEQNO + 1 FROM SEQLIST WHERE SEQNO 尚、 MAXRECURSION の範囲は「0」~「32767」で「0」指定は制限が無い様です。 制限無しでもあまりに大きい値は問題有りだとは思います。 « 前の記事 次の記事 » コメント(0)