1

作成したカーソルを次のように実行すると、最終結果は問題ありません。スクリプトを実行すると、更新する必要があるすべてのレコードのクエリ出力画面に大量の結果 (1 億 6000 万) が表示されますが、リストが表示されます。誰か見てもらえますか?

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 に答える