ユーザテーブルタイプを作成する必要があります。私の好みは、単一のSQLステートメントを使用することです。SQL Server 2008は、SQL文を使用してユーザテーブルタイプのcreate文を作成する必要があります。
select 'create type ' + tt.name + ' as TABLE (' + c.name + ' ' + t.name +
case
when t.name in ('varchar','char','nvarchar','nchar','binary','varbinary') then
'(' +
case
when c.max_length = -1 then 'MAX'
else convert(varchar, c.max_length)
end + ')'
when t.name in ('numeric','decimal') then
'(' + convert(varchar, c.precision) + ',' + convert(varchar, c.scale) + ')'
else ''
end + ')'
from sys.table_types tt
join sys.columns c
on tt.type_table_object_id = c.object_id
join sys.types t
on c.system_type_id = t.system_type_id and
c.user_type_id = t.user_type_id
これは、データ型の点で適用範囲が限定されています。私は最初の文を使用して単一列テーブルのステートメントを作成生成するロジックを派生文を作成するように帰することができる添えものを無視今は十分です。私が理解しようとしているのは、テーブルの列定義を作成するステートメントが1〜n個の列を処理するための内部ループのようなものになるように拡張することです。それは可能でなければならないようですが、私は論理を解明できませんでした。
助けを得る機会を増やすには、前の8つの質問のいくつかに対する回答を受け入れることができます。 – Aaron
うわー、ゼロ%、ええ?私は答えに嘘をつきたい。 ;) –
'scholar'バッジは嫌いですか? – Oybek