我有一個聚集索引是在幾個字段。其中一個字段是CustomerID。我有一個從該表讀取的遊標,然後更新CustomerID。問題是它會導致無限循環。我認爲,當它改變customerid字段時,聚集索引被修改並且索引重新構建表。這種修改似乎使我的遊標無效,所以FETCH NEXT FROM Cursor從不到最後。集羣索引更新來自遊標問題
FETCH NEXT FROM AccountSoftwareRegCursor
INTO @CurrentAccountSoftwareRegUId
WHILE (@@FETCH_STATUS = 0)
BEGIN
UPDATE
Licensing.AccountSoftwareRegistration
SET
AccountUid = @ToAccountUid,
CompanyId = @ToCompanyId,
UpdatedBy = isnull(@UpdatedBy,'Asset Transfer'),
UpdatedByAccount = @UpdatedByAccount,
UpdatedOn = GETUTCDATE()
WHERE
AccountSoftwareRegUid = @CurrentAccountSoftwareRegUId
是否有任何命令我可以發出停止表更新表的聚集索引,直到光標完成後?
你能向我們展示從光標的總體到你關閉它的整個代碼嗎?我的意思是,就我們所知,你可能會錯過一些使你的光標處於無限循環的其他語句 – Lamak 2011-01-24 19:19:20
在遊標中這樣做沒有任何理由。這應該是一個基於集合的操作。請閱讀:http://wiki.lessthandot.com/index.php/Cursors_and_How_to_Avoid_Them – HLGEM 2011-01-24 19:44:50