PetaPocoを使用してSQL Server 2008 R2ストアドプロシージャをコールしようとしています。PetaPocoを使用してストアドプロシージャにテーブル値のパラメータを渡します。
私のストアドプロシージャは、テーブル値のパラメータを受け取ります。
私はテーブル値paramでpetapocoのストアドプロシージャを呼び出すことができますか?
私がやろうとしています何をここで:
var db = new PetaPoco.Database("repikaciskaBaza");
DataTable table = new DataTable();
DataColumn id = table.Columns.Add("id", type: typeof(Int32));
for (int i = 0; i < 10;i++)
{
DataRow row = table.NewRow();
row["id"] = i;
table.Rows.Add(row);
}
var param = new SqlParameter();
param.DbType = DbType.Object;
param.ParameterName = "@art_id";
param.SqlValue = table;
var lista = db.Query<pocoArts>(";exec dbo.test_sporc_param @0", param);
このコードは私を与える例外:
着信の表形式のデータストリーム(TDS)リモートプロシージャコール(RPC)プロトコルストリームが正しくありません。
パラメータ3( "@ 0"):データ型0x62(sql_variant)には、型固有のメタデータに無効な型があります。私はparam.SqlDbType = SqlDbType.Structured;
その後parametarのTY値を設定した場合
私が手例外のような
The table type parameter '@0' must have a valid type name.
私は
param.SqlDbType = SqlDbType.Structured;
param.SqlValue = table;
param.ParameterName = "@art_id";
param.TypeName = SqlDbType.Structured.ToString();
のように私のparamはその後、私は例外を取得定義
カラム、パラメータ、または変数@ 0。 :データ型が見つかりません。構造化されています。
SqlParam
をテーブル値のparamで定義すると、SQL Serverにデータを送信できますか?
ソリューション:
var param = new SqlParameter();
param.SqlDbType = SqlDbType.Structured; // According to marc_s
param.SqlValue = table;
param.ParameterName = "@art_id";
param.TypeName = "dbo.typ_art_id"; // this is TYP from SQL Server database it needs to be equal to type defined in SQL Server not type of param
私はそれをしましたが、今では別の例外を持っています – adopilot
私は渡されましたThanx on help、私の編集をご覧ください – adopilot