我想從我的存儲過程中的每個循環逐個刪除一個表變量中的行,但有些時候它會保持循環並且無法刪除記錄。即使當我嘗試打印該值時,該記錄仍然存在。當我的delete語句執行時,我沒有得到任何錯誤。從表變量中刪除MS SQL
是否存在從Table變量中刪除導致循環未結束的延遲的實例?
這裏是我的代碼:
--DECLARATIONS
declare @temp_table table
(
rid int identity(1,1),
Account_Code varchar(255),
PRIMARY KEY (rid)
)
declare @row_count int = 0
declare @current_id int
-----------------------------
delete from @temp_table
insert into @temp_table
select distinct a.Account_Code from MyTable a
set @row_count =(select COUNT(*) from @temp_table)
print 'TABLE ROWS COUNT:'+ cast(@row_count as varchar(100))
while(@row_count <> 0)
begin
set @current_id = (select top 1 rid from @temp_table)
print 'Current ID in Process:'+cast(@current_id as varchar(100))
/*
Some Processes Here.....
*/
delete from @temp_table where rid = @current_id
set @row_count =(select COUNT(*) from @temp_table)
print 'TABLE ROWS COUNT:'+ cast(@row_count as varchar(max))
end
這是我從印刷的價值得到:
TABLE ROWS COUNT:21
Current ID in Process: 10403
TABLE ROWS COUNT:20
Current ID in Process: 10404
TABLE ROWS COUNT:19
Current ID in Process: 10405
TABLE ROWS COUNT:18
Current ID in Process: 10406
Current ID in Process: 10406
Current ID in Process: 10406
Current ID in Process: 10406
Current ID in Process: 10406
然後,該腳本循環在10406.
注:我已經習慣了其他進程的@temp_table在腳本的這部分之前,這就是爲什麼rid值現在在10400以上