之前我得到任何好戰光標撲,讓我說,我試圖使用嵌套遊標做一些我只需要做一次,但如果我跑了手術的存儲過程一次爲每個用戶和機構我必須做幾百次。嵌套T-SQL遊標不執行正確
我認爲,在這種情況下,嵌套遊標會救我一些工作,但是當我運行此腳本它通過外光標只有一次,而內部的作品就好了該運行。在測試用例中,外部遊標集由兩行組成,內部遊標集約有五十行。它通過外部遊標的第一行,以及所有五十個內部遊標,然後完成。
正如你所看到的,我節省關外的結果讀取(「@@ FETCH_STATUS」),因此它不會與內干擾光標。
我看不出有什麼問題(顯然)。任何人都可以看到我不能?
declare @fetch_user int
declare @fetch_agency int
declare user_cursor cursor for
select upn from #users
open user_cursor
fetch next from user_cursor into @upn
select @fetch_user = @@fetch_status
while @fetch_user = 0
begin
declare agency_cursor cursor for
select agency, subagency from agency_system where system_id = 1
open agency_cursor
fetch next from agency_cursor into @agency, @subagency
select @fetch_agency = @@fetch_status
while @fetch_agency = 0
begin
select @upn, @agency, @subagency
EXEC AddUserToAgencyInRole
@upn
, @agency
, @subagency
, @system_id
, @role_id
, @response output
fetch next from agency_cursor into @agency, @subagency
select @fetch_agency = @@fetch_status
end
close agency_cursor
deallocate agency_cursor
fetch next from user_cursor into @upn
select @fetch_user = @@fetch_status
end
close user_cursor
deallocate user_cursor
eww嵌套遊標。願上帝憐憫你的靈魂。 – RPM1984 2010-09-29 22:23:07
我認爲缺乏@upn的聲明對此並不重要,但卻是無意的發佈漏洞? – 2010-09-29 22:26:51
如果你註釋掉你的內循環,它運行正常嗎? – Beth 2010-09-29 22:36:46