일단 테스트를 위한 환경을 만들자. 앞선 내용과 같다.
use tempdb
go

--drop table source_table
create table source_table (
	id varchar(10)
,	pw varchar(10)
);

--drop table target_table
create table target_table (
	id varchar(10)
,	pw varchar(10)
);

insert source_table values 
	('dwa', '1234')
,	('yasi', '4567')
,	('lk', 'lk123') --new syntax, T-SQL Row Constructors
go

사용자 정의 타입을 만들고, 저장 프로시저에서 Row Set을 매개변수로 받을 수 있다. 예를 들어 예전에는 입력 매개변수로 '1,2,3,4'와 같은 구분자를 가진 문자열을 파싱하여 테이블 형태로 만들었으나 SQL Server 2008에서는 이 방식을 사용하면 된다.
create type id as table --new syntax, Table Value Type
(
	id varchar(10) null
);
go

create proc table_value_param_test
	@table id readonly
as
begin
	declare @i int = 10; --new syntax
	select * from source_table 
	where id in (select id from @table)
end
go

declare @param as id;
insert @param(id) values('dwa'), ('yasi');
exec table_value_param_test @param;
/*
id         pw
---------- ----------
dwa        1234
yasi       4567
*/