본문 바로가기

DB

[코드처리] Update Table Row By Row

  • 상황 정리
    • 임시 테이블[TempTable]에 컬럼
      • 변경할 대상 데이터 ID
      • 변경 데이터
  • 방법1
    • Cursor로 임시테이블 [TempTable] row by row update 처리
DECLARE @ID      BIGINT
DECLARE @Cd      SMALLINT

DECLARE CUR CURSOR FOR
SELECT ID, Cd FROM @TempTable;

OPEN CUR      
FETCH NEXT FROM CUR INTO @ID, @Cd
WHILE @@FETCH_STATUS=0
BEGIN
UPDATE [dbo].[Table]
SEt Cd=@Cd
WHERE ID = @ID

FETCH NEXT FROM CUR INTO @ID, @Cd
END

DEALLOCATE CUR

 

  • 방법1이 실행결과에 비해 장황한 코드기술..이라 쉬운 방법2
    • Update 할 테이블과 임시테이블을 Join 해 Update 실행
UPDATE [dbo].[Table]
SEt Cd = [B].[Cd]
FROM [dbo].[Table]
    INNER JOIN @TempTable AS [B]
            ON [dbo].[Table].[ID] = [B].[ID]