2012-04-25 7 views
5

¿Cómo obtener el resultado en WITH table AS en loop? He pedido previamente acerca de cómo obtener resultados recurrentes de mi mesaCómo usar WITH table AS resultado dentro del cursor loop para ejecutar el procedimiento almacenado

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

;with C as 
(
    definition ... 
) 

He creado bucle cursor donde quiero correr procedimiento almacenado específico para todos los resultados en 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 

El problema es que CURSOR no sabe table de CON COMO resultado.

Respuesta

3

Puede crear una tabla temporal o una variable de tabla para contener las filas devueltas por su consulta CTE y luego usar esa tabla como fuente para su cursor.

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 
Cuestiones relacionadas