次のコードを実行するシーケンスを追跡するのに問題があります。
コードは正常に動作しています
私はちょうど方法を理解しようとしている。
with MyCTE(x)
as
(
1) select x = convert(varchar(8000),'hello')//line 1
union all
3) select x + 'a' from MyCTE where len(x) < 100 //line 3
)
select x from MyCTE
order by x
MSDN:
再帰的実行のセマンティクスは次のとおりです。
CTE式をアンカーメンバーと再帰メンバーに分割します。
アンカー・メンバーを実行して、最初の呼び出しまたは基本結果を作成する
set(T0)。
Tiを入力に、Ti + 1を出力として再帰メンバを実行します。
空のセットが返されるまでステップ3を繰り返します。
結果セットを返します。これはT0からTnまでのUNION ALLです。
段階:
1)行1が実行されます(x = hello)
2)行3が実行される(hello)
3)今それはそれ自身を呼んでいる:ここでxはもう一度こんにちは! ( ライン1)
引用:
Tiを入力に、Ti + 1を出力として再帰メンバを実行します。
私の知る限り、(x)はアウトプット値であり、インプットではありません。