Превышен максимальный уровень вложенности хранимых процедур (предел 32)
Я пытаюсь удалить несколько дубликатов с помощью sp и курсора, но он выдает ошибку
Что я уже пробовал:
creat proc uspfixdup ( @paramID int ) as declare @id int declare _cursor CURSOR LOCAL FAST_FORWARD FOR select id from departments dp where dp.roleid=1 group by id having count(*)>1 order by id desc open _cursor fetch next FROM _cursor INTO @id while @@FETCH_STATUS = 0 BEGIN print @id exec uspfixdup @paramID = @id fetch next FROM _cursor INTO @id END close _cursor DEALLOCATE _cursor DECLARE @deptID1 int DECLARE @deptID2 int SELECT @deptID1 = deptID FROM departments WHERE ID = @paramID AND RoleID = 1 SELECT deptID2 = deptID FROM departments WHERE ID = @paramID AND RoleID = 1 AND deptID <> @deptID1 IF @deptid1 >1 AND @deptID2>1 BEGIN IF @depti1 < @deptID2 DELETE FROM departments WHERE deptID = @detID1 ELSE DELETE FROM departments WHERE deptID = @deptID2 END ELSE PRINT 'no duplicate ' GO
Suvendu Shekhar Giri
Я не думаю, что ему нужно так много строк кода, чтобы удалить дубликат в любом случае.
Не могли бы вы четко изложить свои требования, чтобы мы могли предложить вам лучший подход?
ZurdoDev
Ошибка должна быть довольно ясной. Ваш sp вызывает себя снова и снова рекурсивно, а sql допускает только 32 вызова таким образом.
Member 12612576
Спасибо я уже все исправил