我不明白爲什麼變量,@NextURLId,在這個遊標中沒有被更新。這裏是代碼應該從表中檢索(obp.URL)的唯一URL代碼遊標變量未更新
DECLARE @NextURLId INT = 1
DECLARE @varContact_Id INT
DECLARE GetURL_Cursor CURSOR FOR
SELECT DISTINCT(contact_id)
FROM obp.Contacts
OPEN GetURL_Cursor
FETCH NEXT FROM GetURL_Cursor INTO @varContact_id
WHILE @@FETCH_STATUS = 0
BEGIN
-- Available URLs have the used value as NULL. Used has value of 1.
SET @NextURLId = (SELECT MIN(id) FROM obp.URL WHERE used IS NULL)
UPDATE obp.Contacts SET URL = (
SELECT url from obp.URL WHERE id = @NextURLId)
UPDATE obp.URL SET
used = 1,
contact_id = @varContact_Id,
date = GETDATE()
WHERE id = @NextURLId
FETCH NEXT FROM GetURL_Cursor INTO @varContact_id
END;
CLOSE GetURL_Cursor
DEALLOCATE GetURL_Cursor
,輸入聯繫人表中的網址,然後更新的URL表示,URL已被使用。在我看來,在URL表更新爲'used = 1'之後,當我查詢它時,代碼的下一次迭代應該得到一個新的URLId。
但是,當我運行此代碼時,我每次都得到相同的URL。毫無疑問,我錯過了一些明顯的東西,但需要一些幫助來指出。
作爲一方,如果有一個基於集合的解決方案,我很樂意聽到它。
TIA
我是正確的假設,嘗試一個隨機URLID有關聯的ContactID? –