1
Добрый день всем,Заменить Cursor Следующее задание номер операции с Сетом на основе эквивалент
У меня есть следующий запрос курсора, и хотел бы заменить его с помощью запроса на основе набора для решения проблем с производительностью.
DECLARE @EmpIDM CHAR(21);
DECLARE @EmpName CHAR(21);
DECLARE @EMPCatID INT;
DECLARE Assign_Emp SCROLL CURSOR
FOR
SELECT DISTINCT EMP
, EMPNAME
FROM HR_EMPLOYEES
SET NOCOUNT ON
OPEN Assign_Emp;
FETCH NEXT
FROM Assign_Emp
INTO @EmpIDM
, @EmpName
WHILE @@FETCH_STATUS = 0
BEGIN
SET @EMPCatID = (
SELECT TOP 1 CategoryID
FROM Categories
)
UPDATE Categories
SET CategoryID = (CategoryID + 1) /*Increment Category ID for next Insert*/
INSERT INTO Table1 (
EmpNumber
, EmployeeName
, EmployeeCategoryID
)
VALUES (
@EmpIDM
, @EmpName
, @EMPCatID
)
FETCH NEXT
FROM Assign_Emp
INTO @EmpIDM
, @EmpName
END
CLOSE Assign_Emp;
CLOSE Assign_Emp;
SET NOCOUNT OFF
Моя задача заключается в адаптации следующий сегмент кода в основе работы множества
SET @EMPCatID = (
SELECT TOP 1 CategoryID
FROM Categories
)
UPDATE Categories
SET CategoryID = (CategoryID + 1) /*Increment Category ID for next Insert*/
Я скромно оцениваю любую представление о том, как я могу добиться этого.
Большое спасибо,
О, извините, не понимал, что вы использовали это ... Как насчет использования таблицы temp с столбцом идентификации? –
Это могло бы просто работать. Спасибо, это оказалось для меня головной болью. @ Владимир, ваше понимание очень полезно. Большое вам спасибо за ваши ответы. Большое спасибо. Много спасибо. –