no utilizar un cursor para este su proceso determinado simple
Crear Proc
Declarar las variables
poner los valores en variables
Insertar 4 tablas del Temp y poblarlas (el #SI_OVER_I es una de ellas)
Poner al día A
Fijar SI_Seq = b.maxsi + y.rn
de #SI_OVER_I como A
Interno ensamblar (incomingid selecto, máximo (si_seq) como maxsi
de #si_pver_i
grupo por el incomingid) como B
en a.incomingid=b.incomingid
Interno ensamblar (incomingid selecto, row_number () encima (orden por el si_id) como rn
de (incomingid distinto selecto, si_id del #si_over_i) como x
) como Y
en a.incomingid=y.incomingid
donde IncomingId = @IncomingId y SI_ID = @SI_ID
Crear la tabla del Temp para procesar los datos
Crear la tabla final del temp para descargar los datos necesarios
Entonces poner al día todos los datos finales según reglas de negocio