Hola Diana.
Pense que funcionaría creando una tabla temporal con un campo identity de esa manera, pero ya veo que no.
Entonces hay que usar la opción de los cursores, te dejo reescrito y explicado tu SP, espero que solucione tu problema, recuerda que no esta probado y que segurmante tendrás que hacer unos ajustes.
Código:
CREATE PROCEDURE dbo.ABACTESTATUSMERCSINMOVTOPERIODO
@OPCION INT,
@PERIODO INT,
@USUARIO INT
AS
DECLARE @EST INT
DECLARE @IdHistEst int
DECLARE @IDLGS int
DECLARE @ACT INT
--DECLARE cursinmovto CURSOR FOR
--OPCION 1.. TRIMESTRE, 2.. SEMESTRE, 3...ANUAL
IF @OPCION=1
BEGIN
SELECT @EST=9
END
IF @OPCION=2
BEGIN
SELECT @EST=8
END
IF @OPCION=3
BEGIN
SELECT @EST=7
END
BEGIN TRAN SINMOVTO
SELECT @ACT=0
-----------------------------------------------------------------------------------------
DECLARE @idlgs int ---HAY QUE CHACAR BIEN EL TIPO DE DATO DE ACUERDO AL CAMPO IDLGS
-- DECLARAMOS CURSOR
DECLARE cursinmovto CURSOR FOR
SELECT IDLGS as IDLGS
FROM SECUENCIAS
WHERE
ANIOHASTA=@PERIODO
AND ESTATUS<>@EST
-- ABRIMOS CURSOR
OPEN cursinmovto
-- AVANZAMOS AL PRIMER ELEMENTO Y ASIGNAMOS EL CAMPO A UNA VARIBALE ( .. INTO ...)
FETCH NEXT FROM cursinmovto
INTO @idlgs
-- CICLO, VERIFICAMOS QUE NO ESTAMOS EN EL FINAL ... @@FETCH_STATUS...
WHILE @@FETCH_STATUS = 0
BEGIN
-- obtenemos el máximo valor en ABSECHISTORIAESTATUS.
SELECT @IdHistEst=MAX (IdHistEst) FROM ABSECHISTORIAESTATUS
-- insertamos el registro.
INSERT INTO ABSECHISTORIAESTATUS
(IdHistEst, IDLGS, ESTATUSACT, OBSERVACIONES, FECHA, IDUSUARIO)
VALUES ( @IdHistEst+1, @idlgs, @EST , 'ACT. 1.4.1.16 ' , GETDATE() ,@USUARIO )
-- AVANZAMOS AL SIGUIENTE ELEMENTO Y ASIGNAMOS EL CAMPO A UNA VARIBALE ( .. INTO ...)
FETCH NEXT FROM cursinmovto
INTO @idlgs
END
-- CERRAMOS Y LIBERAMOS EL CURSOR.
CLOSE cursinmovto
DEALLOCATE cursinmovto
-----------------------------------------------------------------------------------------------
SELECT @ACT=COUNT(*)
FROM SECUENCIAS
WHERE
ANIOHASTA=@PERIODO
AND ESTATUS<>@EST
UPDATE SECUENCIAS
SET ESTATUS=@EST
FROM SECUENCIAS
WHERE
IDLGS IN (SELECT IDLGS
FROM SECUENCIAS
WHERE
ANIOHASTA=@PERIODO)
AND ESTATUS<>@EST
SELECT @ACT
COMMIT TRAN SINMOVTO
RETURN
Por cierto cambiaste varios nombre de campos de algunas tablas, respecto de tu primer post, y como que me confundi.
Saludos y espero te sea de utlidad.