não usar um cursor para este seu processamento ajustado simples
Criar Proc
Declarar variáveis
põr valores nas variáveis
Introduzir 4 tabelas do Temp & povoá-las (o #SI_OVER_I é um delas)
Atualizar A
Ajustar SI_Seq = b.maxsi + y.rn
do #SI_OVER_I como A
Interno juntar-se (incomingid seleto, máximo (si_seq) como o maxsi
do #si_pver_i
grupo pelo incomingid) como B
em a.incomingid=b.incomingid
Interno juntar-se (incomingid seleto, row_number () sobre (ordem pelo si_id) como o rn
de (incomingid distinto seleto, si_id do #si_over_i) como x
) como Y
em a.incomingid=y.incomingid
onde IncomingId = @IncomingId e SI_ID = @SI_ID
Criar a tabela do Temp para processar os dados
Criar a tabela final do temp para despejar os dados indispensáveis
Atualizar então todos os dados finais de acordo com réguas de negócio