Не могли бы вы попробовать следующие способы, спасибо за ваше время.
Вы извлекли данные из курсора, но не вставили переменные, пропущенные в цикле WHILE
, пожалуйста, посмотрите код ниже, спасибо.
drop table #temp
select * into #temp from Employee;
declare @eid as int;
declare @nid as varchar(15);
DECLARE Employee_Cursor CURSOR FOR
SELECT A.EmployeeID, A.NationalIDNumber FROM #temp AS A
OPEN Employee_Cursor;
FETCH NEXT FROM Employee_Cursor INTO @eid , @nid ;
WHILE @@FETCH_STATUS = 0
BEGIN
IF (@eid > 10)
BEGIN
delete from #temp where #temp.EmployeeID = @eid;
END
FETCH NEXT FROM Employee_Cursor INTO @eid , @nid ;
END;
CLOSE Employee_Cursor;
DEALLOCATE Employee_Cursor;
GO
select * from #temp
Обновление: У меня есть изменения во 2-м FETCH
утверждении, только что добавили ниже выделенную часть, спасибо
ПОЛУЧИТЬ СЛЕДУЮЩИЙ ОТ Employee_Cursor INTO @eid, @ nid ;