일단모아/마구마구

[mssql] 동적쿼리, Temporary Database

반생자 2008. 3. 12. 19:51

 

1.로컬(Local) 임시 테이블
  1). ## 문자로 시작한다.
  2). 참조 범위(Scope)
      - 현재 세션에서만 참조할 수 있다. (Local)

2.전역 임시 테이블
 1). ## 문자로 시작한다.
 2). 동일한 이름의 임시 테이블을 가질 수 없다.
        - 전역 임시 테이블은 다른 접미사가 붙지 않는다.
        - 따라서 CREATE 전에 동일한 이름이 존재해서는 안되며,
        - 동일한 이름의 가진 테이블을 두 개 이상 만들 수 없다.
 3). 참조 범위(Scope)
        - 모든 세션에서 참조할 수 있다. (Global)
 4). 소멸 시점(Lifetime)이 다르다.
        - 임시 테이블을 생성한 세션이 닫혀야 될 뿐 아니라,다른 프로세스에서 참조하는 것도
          해제되어야 한다.

 

결국 하고 싶은건 동적쿼리를 사용하여 임시테이블에 저장하는 것이 었다~~

죄길~~

----  3일전 자료만 가져오게 설정
DECLARE

    @SHIP_DATE1            NVARCHAR(8),

     @SQL           NVARCHAR(500)

 

    set @SHIP_DATE1 = convert(char(8), getdate() - 14, 112)
   

    SET @SQL = '''' + @SHIP_DATE1 + ''''''

    set @SQL = '''SELECT * FROM ODD2.V_SHIPPING_RESULT WHERE 1 = 1 and ship_date > '''  +
                      @SQL + ''')'
    set @SQL = 'SELECT * INTO ##TEMP_SHIPPING_RESULT   FROM OPENQUERY(MESLINK,'  +
                      @SQL

exec sp_executesql @SQL

 

-- 로칼 임시테이블로 사용시 sp_executesql을 빠져나오면 범위에서 벋어나서

-- "select * from  #TEMP_SHIPPING_RESULT"    가 불가능하다

-- 그래서 전역 임시테이블을 사용하였다. 

 

 

'일단모아 > 마구마구' 카테고리의 다른 글

vb 스크립트 함수모음  (0) 2008.04.16
수출 NEGO관  (0) 2008.03.25
[mssql] sys.objects 정보  (0) 2008.03.10
[mssql] 외래키 변경  (0) 2008.03.10
[mssql] 시스템 sp  (0) 2008.03.10