5

結果WITH table ASCURSORループに入れる方法は? テーブルから再帰的な結果を取得する方法について以前に質問しました

すべてのレコードを再帰的に読み取り、レベルの深さで表示する方法 TSQL

;with C as
(
    definition ...
)

すべての結果に対して特定のストアド プロシージャを実行する CURSOR ループを作成しました。table

declare @id int, @parent int
declare cur cursor local fast_forward 
for 
    select id, parent from C
open cur
fetch next from cur into @id, @parent
while @@fetch_status = 0
    begin
    exec storedProcedure @id=@id, @parent=@parent
fetch next from cur into @id, @parent
end
close cur
deallocate cur

table問題は、WITH AS の結果からCURSOR がわからないことです。

Invalid object name 'C'.
4

1 に答える 1

3

CTE クエリによって返される行を保持する一時テーブルまたはテーブル変数を作成し、そのテーブルをカーソルのソースとして使用できます。

declare @T table
(
  id int,
  parent int
)

;with C as
(
  select 1 as id, 2 as parent
)
insert into @T
select id, parent
from C

declare cur cursor for select id, parent from @T
于 2012-04-25T08:27:27.140 に答える