2012-06-20 11 views
10

मैं इकाई फ्रेमवर्क 4.2 का उपयोग करता हूं और एक संग्रहित प्रक्रिया को कॉल करना चाहता हूं जिसमें इनपुट पैरामीटर हैं। मैं संग्रहित प्रक्रिया को कॉल करने के लिए Database.ExecuteSqlCommand का उपयोग कर रहा हूं।पैरामीटर के साथ डेटाबेस.एक्सक्यूट एसक्यूएल कॉमांड का उपयोग करने के लिए सही वाक्यविन्यास क्या है?

हालांकि, पैरामीटर सही तरीके से मैप करने के लिए दस्तावेज़ के लिए सही वाक्यविन्यास में दस्तावेज़ की कमी है। मेरा google-foo मुझे विफल कर रहा है, और किसी भी मदद की सराहना की जाएगी।

आईई। मैं एक प्रक्रिया

procedure SetElementFrequency 
    @ElementTypeID integer, 
    @Frequency float 
as ... 

मैं

Database.ExecuteSqlCommand("exec SetElementFrequency @p0 @p1", 
          elementType, frequency); 

और

Database.ExecuteSqlCommand("exec SetElementFrequency {0} {1}", 
          elementType, frequency); 

लेकिन वे दोनों त्रुटि गलत पास वाक्य रचना '@ p1' के साथ विफल साथ यह फोन करने की कोशिश की है की है। इस तरह

+3

यदि यह ट्रांजैक्ट-एसक्यूएल है, तो आप पैरामीटर के बीच एक अल्पविराम खो रहे हैं। :) – bricelam

+1

बेशक यह है, और निश्चित रूप से मैं हूं :) – SWeko

उत्तर

16

आपके मौलिक डेटाबेस प्रदाता के आधार पर, आप दोनों में से किसी का उपयोग कर सकते निम्नलिखित।

Database.ExecuteSqlCommand(
    "exec SetElementFrequency {0}, {1}", 
    elementType, frequency); 

या

Database.ExecuteSqlCommand("exec SetElementFrequency ?, ?", elementType, frequency); 

रूप DbParameter आधारित वस्तुओं ParameterName संपत्ति के माध्यम से अपने खुद के नाम प्रदान करने तुम भी elementType और frequency निर्दिष्ट कर सकता है।

2

कोशिश कुछ:

context.Database.ExecuteSqlCommand("delete MasterSmsCampaignCertificateInfo where  MasterSmsCampaignGuid = @p0 and CertificateId = @p1", 
TheCampaignGuid, 
certInfo.CertificateId); 

इस समान प्रश्न पर एक नज़र डालें: ExecuteSqlCommand with output parameter सादर

+0

तो क्या इसका मतलब यह है कि पहला पैरामीटर '@ p0' पर सेट है, दूसरा' @ p1', और इसी तरह से? – SWeko

+0

ऐसा लगता है कि ... – Oscar

+0

ने कोशिश की, – SWeko

2
var sql = @"Update [User] SET FirstName = {0} WHERE Id = {1}"; 
ctx.Database.ExecuteSqlCommand(sql, firstName, id); 
+0

यह वाक्यविन्यास ठीक काम करता है, समस्या मेरे क्वेरी प्रारूप के साथ थी। – SWeko

+0

संदर्भ के लिए समायोजन किए बिना, यह एक समान प्रश्न से दूसरे उत्तर की एक प्रति है। http://stackoverflow.com/a/5475210/642054 –

संबंधित मुद्दे

 संबंधित मुद्दे