2012-04-25 8 views
5

Jak uzyskać wynik w WITH table AS w pętli CURSOR? Już wcześniej poprosił o tym, jak dostać rekurencyjnych wyniki z moim stoleJak używać Z tabelą AS wynik w pętli kursora do uruchamiania procedury przechowywanej

How to read all records recursively and show by level depth TSQL

;with C as 
(
    definition ... 
) 

stworzyłem CURSOR pętli, gdzie chcę uruchomić specjalną procedurę przechowywaną dla wszystkich wyników w 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 @[email protected], @[email protected] 
fetch next from cur into @id, @parent 
end 
close cur 
deallocate cur 

Problem polega na tym, że CURSOR nie zna table z wyniku WITH AS.

Invalid object name 'C'. 

Odpowiedz

3

Można utworzyć tabelę tymczasową lub zmienną tabeli do przechowywania wierszy zwróconych przez zapytanie CTE, a następnie użyć tej tabeli jako źródła dla kursora.

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 
Powiązane problemy