2012-04-25 1 views
5

Как получить результат в WITH table AS в CURSOR цикл? Ранее я спросил о том, как получить рекурсивные результаты из моей таблицыКак использовать таблицу WITH AS в цикле курсора для запуска хранимой процедуры

How to read all records recursively and show by level depth 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 @[email protected], @[email protected] 
fetch next from cur into @id, @parent 
end 
close cur 
deallocate cur 

Проблема в том, что CURSOR не знает table от результата WITH AS.

Invalid object name 'C'. 

ответ

3

Вы можете создать временную таблицу или табличную переменную для хранения строк, возвращаемых вами КТР запроса, а затем использовать эту таблицу в качестве источника для курсора.

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 
Смежные вопросы