DB/MS-SQL

조건문과 함께 임시 테이블의 사용시 주의할 점.

채윤아빠 2009. 1. 1. 14:02
728x90
반응형
#TEMP 등과 같은 임시 테이블을 사용할 때 특이한 경우가 있음.

IF 조건문을 이용하여 동일한 임시테이블을 생성하지만 서로 다른 조건으로 쿼리한 결과를 담을 필요가 있어서 다음과 같이 쿼리를 작성하였더니 실행시 이미 있는 임시파일이라고 계속 오류가 발생함

IF @condition = 1
  SELECT
    data1 INTO #TEST
   FROM TEST
   WHERE 1 = 1
      AND regdate < '2008-12-31'
ELSE
  SELECT
    data1 INTO #TEST
   FROM TEST
   WHERE 1 = 1
      AND regdate >= '2009-01-01'

#TEMP 임시 테이블이 이미 있는 것이라고 계속 오류가 발생합니다.

 SELECT ... INTO 로 임시 테이블을 생성할 경우 INTO로 같은 임시 테이블에 삽입하는게 있으면 위와 같은 오류가 발생합니다. 따라서, 먼저 CREATE TABLE로 임시테이블을 생성하 이후에, INSERT INTO로 구문을 변경하여 오류 문제를 해결하였습니다.
CREATE TABLE #TEST ( data1 INT )

IF @condition = 1
  INSERT INTO #TEST ( data1 )
  SELECT
    data1
   FROM TEST
   WHERE 1 = 1
      AND regdate < '2008-12-31'
ELSE
  INSERT INTO #TEST ( data1 )
  SELECT
    data1
   FROM TEST
   WHERE 1 = 1
      AND regdate >= '2009-01-01'