1

当我执行以下创建的光标时,最终结果很好。尽管在运行脚本时,对于他需要更新的每条记录,我在查询输出屏幕中都会获得大量结果(1.6 亿),但我看到了一个列表。有人可以看看吗?

SET NOCOUNT ON

DECLARE
      @Lidmaatschap_external_id VARCHAR(MAX)
    , @DATE DATETIME

SET @DATE = GETDATE()

DECLARE remco_cursor CURSOR FOR
     SELECT lm.crmp_externalmemberid
     FROM Contact AS c
     INNER JOIN crmp_lidmaatschap AS lm ON c.ContactId = lm.crmp_contactid
     WHERE @date BETWEEN lm.crmp_startdate AND ISNULL(lm.crmp_Einddatum, '2099-12-12')

OPEN remco_cursor

FETCH NEXT FROM remco_cursor
INTO @Lidmaatschap_external_id

WHILE (@@FETCH_STATUS = 0) BEGIN

     SELECT @Lidmaatschap_external_id
     FROM Contact AS c
     INNER JOIN crmp_lidmaatschap AS lm ON c.ContactId = lm.crmp_contactid
     WHERE @date BETWEEN crmp_startdate AND ISNULL(crmp_Einddatum, '2099-12-12')

     UPDATE Contact
     SET crmp_externalmemberidfp = @Lidmaatschap_external_id
     WHERE CURRENT OF remco_cursor

     FETCH NEXT FROM remco_cursor
     INTO @Lidmaatschap_external_id

END

CLOSE remco_cursor
DEALLOCATE remco_cursor

SET NOCOUNT OFF

这是我的第一篇文章,对于混乱的帖子布局感到抱歉。

4

1 回答 1

1

试试这个查询,不使用任何游标 -

UPDATE c
SET crmp_externalmemberidfp = lm.crmp_externalmemberid
FROM dbo.Contact c
JOIN dbo.crmp_lidmaatschap lm ON c.ContactId = lm.crmp_contactid
WHERE GETDATE() BETWEEN lm.crmp_startdate AND ISNULL(lm.crmp_Einddatum, '20991212')

也尝试使用PRINT-

SET NOCOUNT ON;

DECLARE @Lidmaatschap_external_id VARCHAR(MAX)

DECLARE remco_cursor CURSOR FAST_FORWARD READ_ONLY LOCAL FOR
     SELECT lm.crmp_externalmemberid
     FROM dbo.Contact c
     JOIN dbo.crmp_lidmaatschap lm ON c.ContactId = lm.crmp_contactid
     WHERE GETDATE() BETWEEN lm.crmp_startdate AND ISNULL(lm.crmp_Einddatum, '20991212')

OPEN remco_cursor

FETCH NEXT FROM remco_cursor INTO @Lidmaatschap_external_id

WHILE @@FETCH_STATUS = 0 BEGIN

     PRINT @Lidmaatschap_external_id

     UPDATE dbo.Contact
     SET crmp_externalmemberidfp = @Lidmaatschap_external_id
     WHERE CURRENT OF remco_cursor

     FETCH NEXT FROM remco_cursor INTO @Lidmaatschap_external_id

END

CLOSE remco_cursor
DEALLOCATE remco_cursor
于 2013-07-30T08:25:07.450 回答