В процедуре отрабатывает курсор и каким - то образом умудряется вставлять новые записи, хотя команды INSERT внутри нет :
DECLARE PM CURSOR LOCAL STATIC READ_ONLY FOR SELECT [IdPersonMap], [IdSubj] FROM map.[PersonMap] WHERE ([IdExtSystem]=2) and ([IdSubj] IS NOT NULL) and ([IdExternal] IS NULL);
OPEN PM;
FETCH PM INTO @IdPersonMap, @M_idSubj; -- ID соответствия и ID сотрудника
WHILE @@FETCH_STATUS=0
BEGIN
-- наименование сотрудника
SET @subjPersonName=NULL;
SELECT @subjPersonName=dbo.[PersonName]([LastName], [FirstName], [Patronymic], [BirthDate], [idSex]) FROM subj.[Person] WITH (nolock) WHERE [IdSubj]=@M_idSubj;
SET @subjPersonName=dbo.Unify_Str(@subjPersonName, @Correspondence);
IF LEN(@subjPersonName)>0
BEGIN
-- соответствующий по наименованию сотрудник в "1С" (преимущественно не уволенный при полном совпадении)
SET @idSubjExt=NULL;
SELECT @idSubjExt=[IdSubj]
FROM #WS_PERS
WHERE dbo.Unify_Person([LastName], [FirstName], [Patronymic], [BirthDate], [idSex], @Correspondence)=@subjPersonName
ORDER BY [Actual];
UPDATE map.[PersonMap] SET [IdExternal]=@idSubjExt WHERE [IdPersonMap]=@IdPersonMap;
END;
FETCH PM INTO @IdPersonMap, @M_idSubj;
END;
CLOSE PM;
DEALLOCATE PM;
Откуда они могут возникать ?
P.S. : похоже записи в некоторых случаях просто дублируются