아래내용처럼 일정기간의 날동안의 루프돌며 삭제후 셀렉트인서트를 하는데요. 잘돌기는하는데 데이터 반영이 마지막날짜꺼만 커밋되네요. 뭐가잘못됬을까요?
DECLARE @dates VARCHAR(10)
DECLARE @Todates VARCHAR(10)
DECLARE @CNT INT
DECLARE @CurDates VARCHAR(10)
SET @dates = '20131223';
SET @Todates=CONVERT(VARCHAR,GETDATE(), 112);
SET @CNT = 0;
WHILE (@dates < @Todates)
BEGIN TRY
BEGIN TRANSACTION
SET @CurDates = CONVERT(VARCHAR, DATEADD(DAY,1,@dates), 112);
DELETE FROM tableA WHERE yyyymmdd =@CurDates
INSERT INTO tableA (a,b,c,d ) SELECT a,b,c,d FROM ddd where yyyymmdd=@CurDates
PRINT '###############tableA####'
DELETE FROM tableB WHERE yyyymmdd =@CurDates
INSERT INTO tableB (a,b,c,d ) SELECT a,b,c,d FROM ddd where yyyymmdd=@CurDates
PRINT '###############tableB######'
DELETE FROM tableC WHERE yyyymmdd =@CurDates INSERT INTO tableC (a,b,c,d ) SELECT a,b,c,d FROM ddd where yyyymmdd=@CurDates
PRINT '############### tableC #####'
SET @CNT += 1;
SET @dates = @CurDates;
COMMIT TRANSACTION
END TRY
BEGIN CATCH ROLLBACK TRANSACTION SELECT ERROR_NUMBER() AS [에러 번호] , ERROR_SEVERITY() AS [에러 중요도] , ERROR_STATE() AS [에러 상태] , ERROR_PROCEDURE() AS [에러 프로시져] , ERROR_LINE() AS [에러 발생라인] , ERROR_MESSAGE() AS [에러 발생내용] , GETDATE() AS [에러 발생시간] , @@FETCH_STATUS as [상태] END CATCH
DECLARE @dates VARCHAR(10)
DECLARE @Todates VARCHAR(10)
DECLARE @CNT INT
DECLARE @CurDates VARCHAR(10)
SET @dates = '20131223';
SET @Todates=CONVERT(VARCHAR,GETDATE(), 112);
SET @CNT = 0;
WHILE (@dates < @Todates)
BEGIN TRY
BEGIN TRANSACTION
SET @CurDates = CONVERT(VARCHAR, DATEADD(DAY,1,@dates), 112);
DELETE FROM tableA WHERE yyyymmdd =@CurDates
INSERT INTO tableA (a,b,c,d ) SELECT a,b,c,d FROM ddd where yyyymmdd=@CurDates
PRINT '###############tableA####'
DELETE FROM tableB WHERE yyyymmdd =@CurDates
INSERT INTO tableB (a,b,c,d ) SELECT a,b,c,d FROM ddd where yyyymmdd=@CurDates
PRINT '###############tableB######'
DELETE FROM tableC WHERE yyyymmdd =@CurDates INSERT INTO tableC (a,b,c,d ) SELECT a,b,c,d FROM ddd where yyyymmdd=@CurDates
PRINT '############### tableC #####'
SET @CNT += 1;
SET @dates = @CurDates;
COMMIT TRANSACTION
END TRY
BEGIN CATCH ROLLBACK TRANSACTION SELECT ERROR_NUMBER() AS [에러 번호] , ERROR_SEVERITY() AS [에러 중요도] , ERROR_STATE() AS [에러 상태] , ERROR_PROCEDURE() AS [에러 프로시져] , ERROR_LINE() AS [에러 발생라인] , ERROR_MESSAGE() AS [에러 발생내용] , GETDATE() AS [에러 발생시간] , @@FETCH_STATUS as [상태] END CATCH