我想用光標從表中刪除記錄。我該怎麼做?如何使用光標刪除表中的記錄
我使用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