Monday, 15 August 2011

c# - Assigning too many parameters for procedure when having just only one table value parameter -


मैं asp.net (C #), .NET 4, SQL Server 2012, IIS7 का उपयोग कर रहा हूँ।

< P> मैं तालिका मूल्यवान मानदंडों का उपयोग करके एसक्यूएल सर्वर पर श्रेष्ठ डेटा आयात करना चाहता हूं। लेकिन मैं एक समस्या का सामना कर रहा हूँ। यहाँ आंशिक कोड है:

सी #

  // एक्सट्रैक्ट एक्सेल डेटा, केवल 10 निश्चित पंक्तियाँ MyEXcnnstring = "प्रदाता = Microsoft.ACE.OLEDB.12.0;" + "डेटा स्रोत =" + Exfullname + "; विस्तारित गुण = एक्सेल 12.0;"; MyEXcnn = नया OleDbConnection (myEXcnnstring); myEXcnn.Open (); Myexsql = "select '" mycompany के रूप में, "" + "एक्सप्रोजेक्ट +"' मेरे प्रोजेक्ट के रूप में, '"+ Exdate.ToShortDateString () +"' mydate के रूप में, * से [sheet1 $ A1: N10] "; MyEXcmd = नया OleDbCommand (myEXsql, myEXcnn); MyEXda = नया OleDbDataAdapter (myEXcmd); MyEXdt = नया डेटाटाले (); MyEXds = नया डाटासेट (); myEXda.Fill (myEXds); MyEXdt = myEXds.Tables [0]; myEXcnn.Close (); // SQL सर्वर पर लोड mycmd.CommandType = CommandType.StoredProcedure; Mycmd.CommandText = "dbo.loadCost"; SqlParameter tvpParam = mycmd.Parameters.AddWithValue ("@ TVPCost", myEXdt); TvpParam.SqlDbType = SqlDbType.structured; TvpParam.TypeName = "dbo.TVP_Cost"; mycmd.ExecuteNonQuery (); myCnn.Close ();  

एसक्यूएल सर्वर टीवीप को परिभाषित करता है

<प्री> प्रकार बनाएं [डीबीओ]। [टीवीपीकास्ट] एएस टेबल ([मायकॉम्पनी] [नववर्चार] (50) नहीं नल, [मायप्रोजेक्ट] [नैवर्चार] (50) नहीं नल, [मायदेट] [तिथि] नहीं नल, [मायटाइप] [नर्वचर] (50) नहीं नल, [क्षेत्रफल] [संख्यात्मक] (18, 8) नहीं, शून्य [क्षेत्रफल] [संख्यात्मक] (18, 8) नहीं, शून्य - -)

SQL सर्वर संग्रहित प्रक्रिया

  वैकल्पिक प्रक्रिया [dbo]। [LoadCost] @TVPCost dbo.TVP_Cost केवल पढ़ने के लिए के रूप में प्रारंभिक निबंध पर;   

त्रुटि संदेश यह है कि मुझे बहुत अधिक दिया गया है, कॉस्टास्ट (सह 1, को 2, सीओ 3, सीओ 4, सीओ 5) में INSERT का चयन करें co1, co2, co3, co4, co5 @TVPcost END प्रक्रिया के लिए पैरामीटर लेकिन मेरे पास केवल एक मापदंड है, एक टेबल-मूल्य मानदंड।

मैंने देखा कि आप घोषणा नहीं कर रहे हैं mycmd । क्या यह संभव है कि आपने पहले कमान वस्तु का इस्तेमाल किया और पहले से ही इसमें कुछ मापदंड हैं?

कमान ऑब्जेक्ट सस्ते हैं, मैं हमेशा एक नया लेता हूं:

  Var cmd = MyConnection.CreateCommand ();  

No comments:

Post a Comment