mssql의 프로시저에서 #이 붙은건 뭘까요 0 4 1,604

by 지훈 [SQLServer] [2007.03.29 09:22:23]


아래소스중 찐한부분 #TEMP 이건 뭘뜻하는건지요??

 

set ANSI_NULLS ON

set QUOTED_IDENTIFIER ON

go

 

ALTER     PROCEDURE [dbo].[KM_US_SET_GROUP_HIERARCHY]

(

       @GROUPID      VARCHAR(50)       

)

AS

DECLARE  @GROUP_LEVEL NUMERIC, @CURRENT  NUMERIC, @COUNT  NUMERIC,  @TEMPGROUPID VARCHAR(50),

       @TEMP_SEQ  NUMERIC(1) ,@CURRENT_ID VARCHAR(50), @CURRENT_NM  VARCHAR(500)

      

CREATE TABLE #TEMP
(
             SEQ           NUMERIC(1) NOT NULL,
             GROUPID       VARCHAR(50) NOT NULL,
             NAME          VARCHAR(500) NOT NULL
)

 

BEGIN

      

       DELETE FROM IKEP_US_GROUP_HIERARCHY WHERE GROUPID=@GROUPID

       INSERT INTO IKEP_US_GROUP_HIERARCHY(GROUPID, NAME)

       SELECT ID, NAME FROM IKEP_US_GROUP WHERE ID=@GROUPID

       SET @CURRENT = 0

       SET @TEMPGROUPID = @GROUPID

       WHILE @CURRENT >= 0

       BEGIN

             IF EXISTS (SELECT ID FROM IKEP_US_GROUP  WHERE ID=@TEMPGROUPID )

             BEGIN

                    INSERT INTO #TEMP(SEQ, GROUPID, NAME)

                    SELECT  @CURRENT, ID, NAME FROM IKEP_US_GROUP WHERE ID = @TEMPGROUPID

                    SELECT  @TEMPGROUPID =PARENTGROUPID FROM IKEP_US_GROUP WHERE ID = @TEMPGROUPID

                    IF EXISTS (SELECT PARENTGROUPID FROM IKEP_US_GROUP WHERE ID = @TEMPGROUPID  )

                           SET @CURRENT = @CURRENT +1

                    ELSE

                           BEGIN

                                 SET @GROUP_LEVEL = @CURRENT

                                 SET @CURRENT = -1

                           END

             END

             ELSE

                    RETURN

       END

       DECLARE HEIARCHYCursor CURSOR FOR

             SELECT  SEQ FROM #TEMP ORDER BY SEQ DESC

       OPEN HEIARCHYCursor

       FETCH NEXT FROM HEIARCHYCursor INTO @TEMP_SEQ

by finecomp [2007.03.29 00:00:00]
그건 Temp Table이라고 하는건데요...반드시 #temp라고 이름하지 않아도 되고 #뒤에는 테이블naming rule만 맞으면 어떤 이름이라도 가능합니다;

세션내에서 생성되어 그 세션 중에 어느 위치던 실제 테이블처럼 access가 가능하고(물론 조인도) 별도의 drop없이도 세션이 끝나면 drop되는 임시테이블입니다.
temp db 영역에 생성됩니다.
오래되서 이정도밖에 기억안나네요...;

건승하시길...수고하세요~~

by 지훈 [2007.03.29 00:00:00]
정말 답변 감사합니다!!

by 지훈 [2007.03.29 00:00:00]
오라클에서는
create global temporary table temp(~~~

이런식으로 하는가요?

by finecomp [2007.03.29 00:00:00]
생성 시 ON_COMMIT을 쓴다던가 하는 데이터 유지부분의 조절등 세부적인 속성은 약간은 다르긴 하지만 기본적인 컨셉은 유사한 듯 합니다.

상세한 것은 오라클사이트에서 직접 확인해보세요...;
제약 사항등 많은 정보가 있습니다...^^;

건승하시길...수고하세요~~
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입