table データ型の機能は一時テーブルに似ています。このデータ型は、後の処理で結果セットを格納する場合に使用します。このデータ型を使用できるのは、table 型のローカル変数と、ユーザー定義関数の戻り値を定義する場合だけです。
table 変数または戻り値の定義には、列、各列のデータ型、有効桁数、および小数点以下桁数、オプションの PRIMARY KEY、UNIQUE、NULL、CHECK の各制約の定義が含まれます。ユーザー定義テーブルは、データ型として使用できません。
table 変数に格納された行やユーザー定義関数で返された行の形式は、変数を宣言するか関数を作成するときに定義する必要があります。この構文は CREATE TABLE 構文に基づいています。次に例を示します。
DECLARE @TableVar TABLE (Cola int PRIMARY KEY, Colb char(3))
INSERT INTO @TableVar VALUES (1, 'abc')
INSERT INTO @TableVar VALUES (2, 'def')
SELECT * FROM @TableVar
GO
table 変数、および table を返すユーザー定義関数は、特定の SELECT ステートメントおよび INSERT ステートメントでのみ使用できます。この場合、テーブルは、UPDATE、DELETE、および DECLARE CURSOR の各ステートメントでサポートされています。table 変数、table を返すユーザー定義関数は、その他の Transact-SQL ステートメントでは使用できません。
テーブルに適用されたインデックスや他の制約は、DECLARE 変数または CREATE FUNCTION ステートメントの一部として定義する必要があります。これらは後から適用することができません。CREATE INDEX ステートメントや ALTER TABLE ステートメントでは table 変数およびユーザー定義関数を参照できないためです。
table 変数とユーザー定義関数の定義に使用される構文に関する詳細については、「DECLARE @local_variable (Transact-SQL)」および「CREATE FUNCTION (Transact-SQL)」を参照してください。