4

テーブル値パラメーターを入力として受け取る SQL クエリの生成ブロックがあります。

DataTable data入力パラメータがある場合:

// add the table-value parameter
var tvp = com.Parameters.AddWithValue("data", data);
tvp.SqlDbType = SqlDbType.Structured;
tvp.TypeName = "???";

com.ExecuteNonQuery();

問題は、コマンドがストアド プロシージャでない場合、TypeName宣言する必要があることです。

パラメーター内の列の数と型はdata大きく異なる可能性があるため、使用できる SQL 型がありません。

このように TVP を使用する方法はありますか?

4

1 に答える 1

3

テーブル値パラメーターを渡すには、サーバー側で TypeName を定義する必要があります。したがって、存在しない場合は、いいえ...この方法でテーブル値パラメーターを使用することはできません。制限と要件の詳細については、こちらをご覧ください。

http://msdn.microsoft.com/en-us/library/bb675163.aspx

試したことはありませんが、データテーブルの構造に基づいて、このコード ブロックの前に create TypeName ステートメントを生成できなかった理由はありません。好きな名前を選んで、終わったらドロップできます。

データテーブルの構造に基づいて create typename ステートメントを作成するには、少しコーディングが必要ですが実行可能です。

于 2011-05-19T17:21:55.763 に答える