का उपयोग करके संग्रहीत प्रक्रिया के लिए पास तालिका मान param को पास करें, जबकि मैं PetaPoco का उपयोग कर SQL Server 2008 R2 संग्रहीत प्रक्रिया को कॉल करने का प्रयास कर रहा हूं।पेटापोको
मेरी संग्रहीत प्रक्रिया तालिका मूल्यवान पैरामीटर स्वीकार करती है।
मैं तालिका मूल्य पैरामीटर के साथ पेटापोको में संग्रहीत प्रक्रिया को कैसे कॉल कर सकता हूं?
यहाँ मैं क्या करने की कोशिश कर रहा हूँ:
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);
इस कोड को मुझे एक अपवाद देता है:
भेजे तालिका डेटा स्ट्रीम (टीडीएस) दूरस्थ प्रक्रिया कॉल (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();
मेरे परम तब मैं अपवाद को परिभाषित
कॉलम, पैरामीटर, या चर @ 0। : संरचित डेटा प्रकार नहीं मिल सकता है।
मैं तालिका मूल्यवान param के साथ SqlParam
को कैसे परिभाषित कर सकता हूं ताकि मैं इसे SQL सर्वर पर श्वेत डेटा भेज सकूं?
समाधान:
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 कृपया मेरे संपादन देखें – adopilot