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