Visual Studio 2008のSQLストアドプロシージャを実行しようとしていますが、これはテーブル値のUDTパラメータを入力として受け取ります。 Visual Studio 2008でこのパラメータを追加しましたが、このプログラムを実行すると、 "ArgumentException - 指定されたタイプがターゲットサーバに登録されていません。" 私はこの問題を探って、SQL Server 2008のこのテーブルタイプのプロパティと一致するVisual Studio 2008で新しいクラスを作成する必要があると考えます。テーブル UDT'sを含むインターネット上の例は見つかりません。そして私はすべてのスカラーUDTの例を試しましたが、テーブルベースにするためにこれらを変更する方法がわかりませんでした。
また、アセンブリを作成する必要があるかもしれませんが、SQL Server 2008に型をインポートする場合にのみ必要なのか、型をVisual Studioにインポートするために使用できるのか分かりません。ところで、私はVS 2008のサーバーエクスプローラからリストされたタイプは表示されませんが、データベースとそのSPが表示されます。私はデータベースをリフレッシュしようとしましたが、タイプはまだ表示されませんでした。 私がする必要があるのは簡単です。私はそうのようなテーブルのUDTを持っている:sql table udt、vs 2008、csharp
CREATE TYPE [dbo].[parseInputFile] AS TABLE(
[NumCols] [int] IDENTITY(1,1) NOT NULL,
[strRow] [varchar](500) NOT NULL,
PRIMARY KEY CLUSTERED
そして、私のC#のコードからコードスニペットは、次のとおりです。
にrowsAffectedpublic static int AppendData(string[] myStringArray)
{
SqlConnection conn = new SqlConnection(connString);
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "dbo.uspAppendTableFromInput";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = conn;
SqlParameter param = cmd.Parameters.Add("@InputFileParam", SqlDbType.Udt);
param.UdtTypeName = "AdventureWorks.dbo.parseInputFile";
param.Value = myStringArray;
conn.Open();
RowsAffected = cmd.ExecuteNonQuery();
これを実行した後、影響を受けたゼロの行を示しています。私は何が欠けていますか?私はこの簡単な例を示すウェブサイトを指摘できますか?それとも私にヒントを教えて?私も試みた 'param.UdtTypeName = "parseInputFile";'上記のスニペットでは、これは同じエラーを返しました。ところで、 "myStringArray"は本質的にテーブルです。それは一連の文字列です。例えばmyStringArray [0] = "こんにちは|ボブ|観光|方法"、myStringArray [1] = "I |アム|ファイン|そして" など
例http://stackoverflow.com/questions/337704/parameterizing-a-sql-in-clause/337864#337864 – ahains
@何あなたのストアドプロシージャは次のように見えますか?ほとんどあなたが宣言したパラメータのリスト –
そして、正確に何を達成しようとしていますか?ユーザー定義のテーブル型のパラメータセットを使用して、格納されたprocを呼び出しますか?または、格納されたprocを呼び出すと、そのテーブルが返されます。あまり明確ではない... –