SQL Server 2008
とりわけ2つのフィールドを持つテーブルがあります
TableA
alterid uniqueidentifier
revnum varchar(50)
別のテーブルには、最初のテーブルとまったく同じフィールドがあります
。 TableB
alterid uniqueidentifier
revnum varchar(50)
revnumフィールドを比較して確認したい。TableA の各レコードについて、TableB にレコードがあるかどうかを確認します。それが存在し、revnum フィールドが異なる場合は、TableB.revnum を TebleA.revnum に更新します。存在しない場合は、TableA のレコードを TableB に追加します。
ここにコードがあります
BEGIN
SET @Prod_curs =CURSOR FOR SELECT s.alterid, s.revnum, r.revnum FROM TableA s LEFT OUTER JOIN
TableB r ON s.alterid=r.alterid
WHERE s.revnum<>r.revnum OR r.revnum IS NULL
OPEN @Prod_curs
FETCH NEXT FROM @Prod_curs INTO @alterid, @srevnum, @rrevnum
WHILE @@FETCH_STATUS=0
BEGIN
IF @rrevnum IS NULL
BEGIN
INSERT INTO TableB (alterid,revnum) VALUES (@alterid,ISNULL(@srevnum,0))
END
IF @srevnum<>@rrevnum
BEGIN
UPDATE TableB SET revnum=@srevnum WHERE alterid=@alterid
END
FETCH NEXT FROM @Prod_curs INTO @alterid, @srevnum, @rrevnum
END
CLOSE @Prod_curs;
DEALLOCATE @Prod_curs;
END
私のコードは、奇妙なことが起こる一部のレコードを除いて、約 15000 レコードのセットで正常に動作します。
TableA には、このレコードの
alterid revnum
'A770B280-B4DA-4937-9046-B24E60259AB6' '2-414922-1--1-1-2-51-0' があります。
TableB に格納されている場合、値は
alterid revnum
'BF18A0EB-A684-486B-B053-55BC2969F1E3' '2-414922-1--1-1-2-51-0' です。
何らかの理由でオルタイドが変更され、その理由がわかりません。
誰か助けてくれませんか