/********************************************************************************************
-- Title : [2k8] 사용자 정의 테이블 형식 이용한 파라미터 전달(TVP)
-- Reference : dbnuri.com 이장래 형님
-- Key word : 테이블 파라미터 테이블파라미터 table parameter table data type tvp
table-valued parameter 사용자 형식 사용자 타입 사용자형식 사용자타입
********************************************************************************************/
USE Tempdb;
GO
-- 테이블 생성
-- drop table member2;
CREATE TABLE Member2 (
MemID VARCHAR(10) PRIMARY KEY,
MemName NVARCHAR(10),
MemMail VARCHAR(100)
);
-- 사용자 정의 테이블 데이터 형식 만들기
CREATE TYPE MemberTableType AS TABLE (
MemID VARCHAR(10),
MemName NVARCHAR(10),
MemMail VARCHAR(100)
);
-- 저장 프로시저 만들기
CREATE PROCEDURE usp_InsertMember2
@MemList MemberTableType READONLY /* READONLY 속성을 필히 지정해야 함 */
AS
SET NOCOUNT ON
INSERT INTO Member2(MemID, MemName, MemMail)
SELECT * FROM @MemList
GO
-- 프로시저 수행
DECLARE @MemberTVP AS MemberTableType;
INSERT INTO @MemberTVP (MemID, MemName, MemMail)
VALUES('jang', N'이장군', 'jgoon@sample.com');
INSERT INTO @MemberTVP (MemID, MemName, MemMail)
VALUES('jane', N'박제인', 'jane@sample.com');
INSERT INTO @MemberTVP (MemID, MemName, MemMail)
VALUES('tomy', N'정토미', 'jtomy@sample.com');
EXEC usp_InsertMember2 @MemberTVP;
-- 확인
SELECT * FROM Member2;
-------------------------------------------------------------------------------------------------------------
CREATE TYPE tp_key_list AS TABLE
(
[key] [bigint] NOT NULL,
PRIMARY KEY CLUSTERED
(
[key] ASC
) WITH (IGNORE_DUP_KEY = OFF)
)