と呼ばれる CTE (Common Table Expression) を宣言する SQL Server 2005 でストアド プロシージャを作成していますfoo
。
foo
自身を再帰的に呼び出しますが、SP のパラメーター ( @bar
) の 1 つが null の場合は無限にループします。
この無限ループを止めるために、オプションを使用しようとしましたMAXRECURSION
:
- が null の場合
@bar
、MAXRECURSION を 1 に設定します。 - が null でない場合
@bar
、MAXRECURSION を 0 (制限なし) に設定します。
そこで、 null@maxrec
かどうかに応じて 1 または 0 を取るローカル変数を宣言しました。@bar
DECLARE @maxrec INT;
SET @maxrec = 0;
if (@dim_course_categories is null)
begin
SET @maxrec = 1;
end
;WITH foo AS (
...
)
SELECT * FROM foo
OPTION (MAXRECURSION @maxrec)
Incorrect syntax near '@maxrec'.
コードを解析すると、行を参照する次のエラーが表示
されますOPTION (MAXRECURSION @localvar)
。
それで、私は何を間違っていますか?OPTION句内でローカル変数を使用することは禁止されていますか?