ユーザー定義テーブル型とテーブル値パラメータ その2 IN 演算子の値リストをパラメータ化

SQL Server 2008 からの新機能であるユーザー定義テーブル型テーブル値パラメータは、"配列" のように利用することもできるので、IN 演算子の値リストをパラメータ化する目的でも利用できます。これは次のように試せます。

-- ユーザー定義テーブル型の作成
CREATE TYPE valuelist
 AS TABLE ( val int )
go
-- テーブル値パラメータを利用するストアド プロシージャの作成
CREATE PROCEDURE testProc2
 @v valuelist READONLY
AS
 SELECT * FROM t1
  WHERE a IN ( SELECT val FROM @v )

ユーザー定義テーブル型の val 列へ「1」と「5」、「7」を格納して、この値をストアド プロシージャの IN 演算子へ与えて実行してみます。

-- ユーザー定義テーブル型を利用した変数 @v の宣言
DECLARE @v AS valuelist

-- 変数 @v へ値の格納(IN 演算子に与える値)
INSERT INTO @v (val)
 VALUES ( 1 )
       ,( 5 )
       ,( 7 )

-- ストアド プロシージャの実行
EXEC testProc2 @v

このように、ユーザー定義テーブル型とテーブル値パラメータを利用すると、配列のように利用することができるので便利です。なお、VBC# などのアプリケーションからテーブル値パラメータを利用する方法は、本自習書シリーズの「開発者のための Transact-SQL 応用」編を参考にしてみてください。
http://www.microsoft.com/japan/sqlserver/2008/self-learning/default.mspx