Database/MSSQL
Table Valued Parameters(TVP)
달빛에취하다
2016. 8. 1. 12:30
TVP(테이블 반환 매개 변수)는 Table 구조의 Type을 생성 후 해당 타입을 매개변수 형태로 사용합니다.
제가 사용한 경우는 WHERE 절에 사용되는 스칼라 함수 내에서 CTE가 따로 돌고 있는 상황이었습니다. 꼭 사용해야 하는 경우라서.
프러시저나 함수등에 매개변수 형태도 던져 사용하거나 반환값으로 사용 가능합니다.
자세한 사항은 아래 링크를 확인해 주세요.
https://msdn.microsoft.com/ko-kr/library/bb510489(v=sql.105).aspx
USE AdventureWorks2008R2;
GO
/* Create a table type. */
CREATE TYPE LocationTableType AS TABLE
( LocationName VARCHAR(50)
, CostRate INT );
GO
/* Create a procedure to receive data for the table-valued parameter. */
CREATE PROCEDURE usp_InsertProductionLocation
@TVP LocationTableType READONLY
AS
SET NOCOUNT ON
INSERT INTO [AdventureWorks2008R2].[Production].[Location]
([Name]
,[CostRate]
,[Availability]
,[ModifiedDate])
SELECT *, 0, GETDATE()
FROM @TVP;
GO
/* Declare a variable that references the type. */
DECLARE @LocationTVP
AS LocationTableType;
/* Add data to the table variable. */
INSERT INTO @LocationTVP (LocationName, CostRate)
SELECT [Name], 0.00
FROM
[AdventureWorks2008R2].[Person].[StateProvince];
/* Pass the table variable data to a stored procedure. */
EXEC usp_InsertProductionLocation @LocationTVP;
GO