최근 포토로그


MSSQL 임시테이블 활용하기 MSSQL과 ORACLE

물론 테이블변수가 작게 쓸려고 하거나 컴파일 하지 않으려고 하면 쓰임새가 많다.

하지만, 
임시테이블 (#)이 붙은 테이블은 쓰기에 따라서 아름다운 결과물을 만들어 낼수 있다.

MSSQL 임시테이블은 #을 하나만 쓴다면 자기영역 내에서는 어디에서든 쓸수 있다.

즉, 내부 프로시저 안과 내가 호출하는 프로시저내에서는 자유롭게 부를 수 있다는 거다.

즉,

아래 셈플을 보자

=============================================================

-- DROP PROC dbo.usp_TableVar
go
CREATE PROC dbo.usp_TableVar

AS

create table #Tb_test 
(

OrderID int identity(1,1) PRIMARY KEY NONCLUSTERED
, OrderDate datetime CHECK (OrderDate >= '1900-01-01')

)

INSERT INTO #Tb_test values ('20180101')
INSERT INTO #Tb_test values ('19910101')

--SELECT TOP 10 OrderDate FROM Orders --OrderID 컬럼은 지정할 필요 없다.


UPDATE #Tb_test SET OrderDate = OrderDate + 1

DELETE #Tb_test WHERE OrderDate > '1996-07-10'

exec usp_TableVar2

SELECT * FROM #Tb_test

GO



-- DROP PROC dbo.usp_TableVar2
go
CREATE PROC dbo.usp_TableVar2

AS


INSERT INTO #Tb_test values ('20180102')
INSERT INTO #Tb_test values ('19910103')
exec usp_TableVar3


GO

-- DROP PROC dbo.usp_TableVar3
go
CREATE PROC dbo.usp_TableVar3

AS


INSERT INTO #Tb_test values ('20180105')
INSERT INTO #Tb_test values ('19910106')

GO

EXEC dbo.usp_TableVar


-- DROP PROC dbo.usp_TableVar
-- DROP PROC dbo.usp_TableVar2
-- DROP PROC dbo.usp_TableVar3

============================

usp_TableVar 프로시저가 usp_TableVar2를 부르고 usp_TableVa3을 부른다.

그럼에도 임시테이블 
#Tb_test 에는 접근 가능하고, 다 추가/수정/삭제 되다.


덧글

댓글 입력 영역