我想用光标从表中删除记录。我该怎么做?如何使用光标删除表中的记录
我使用MSSQL 2008 Express此代码不会从#temp中删除任何内容。我也尝试了当前的cursor_name没有工作。
这里是我的示例代码:
use AdventureWorks
drop table #temp
select * into #temp from HumanResources.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;
END;
CLOSE Employee_Cursor;
DEALLOCATE Employee_Cursor;
GO
select * from #temp
在此先感谢
对于所有神圣的爱,为什么你用光标来代替简单的删除查询呢?你对DBA有怨恨吗? – JohnFx 2012-01-11 04:10:15
愚蠢的问题,但你有雇员表中的任何EmployeeID> 10?另外你为什么要为此做一个光标?这是一个非常低效的方法。 还要确保没有触发器正在中止删除。 – Jordan 2012-01-11 04:12:20
@JohnFx不,我只是好奇地做,只是为了学习,在实践中我也使用简单的删除语句 – vivek 2012-01-11 04:13:18