我不明白为什么变量,@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? –