T-sql データベース (ストアド プロシージャではない) で呼び出そうとする C# の文字列として記述されたクエリがあります。渡す必要があるパラメーターの 1 つは、GUID のリストです。これには、テーブル値パラメーターを使用しようとしています。クエリの一部で動的なテーブル名が必要な場合、ストアド プロシージャはデバッグにはやや扱いにくいと考えられます。クエリの最後の部分では、テーブルの ID を、渡す Guid のリストに結合します。
コマンドにパラメーターを追加する
var ListOfIDs = new DataTable();
ListOfIDs.Columns.Add("ID", typeof (Guid));
selectedIDs.ForEach(x=> ListOfIDs.Rows.Add(x));
cmd.Parameters.Add(new SqlParameter("@ListOfIDs", SqlDbType.Udt)
{
Value = ListOfIDs, UdtTypeName = "ListOfGuids"
});
私のテーブル
CREATE TYPE [dbo].[ListOfGuids] AS TABLE(
[ID] [uniqueidentifier] NULL
)
行を実行すると:
var reader = cmd.ExecuteReader();
エラーが発生します:
指定された型はターゲット サーバーに登録されていません。
これを機能させるために必要なことを見つけることができませんでした。