मुझे पता है कि यह एक पुराना प्रश्न है, लेकिन इसे सही ढंग से संबोधित नहीं किया गया है, इसलिए मैं अन्य लोगों के लिए इसका उत्तर दे रहा हूं जो इस समस्या में भाग ले सकते हैं।
डिफ़ॉल्ट रूप से Oracle का ODP.net चर को स्थिति के अनुसार बांधता है, और प्रत्येक स्थिति को एक नए चर के रूप में मानता है।
प्रत्येक प्रतिलिपि को एक भिन्न चर के रूप में मानना और उसके मान को कई बार सेट करना एक समाधान और दर्द है, जैसा कि फुरमैन87 ने उल्लेख किया है, और यदि आप क्वेरी को फिर से लिखने और चीजों को इधर-उधर करने की कोशिश कर रहे हैं, तो इससे बग हो सकते हैं।
सही तरीका यह है कि OracleCommand की BindByName प्रॉपर्टी को नीचे की तरह सही पर सेट किया जाए:
var cmd = new OracleCommand(cmdtxt, conn);
cmd.BindByName = true;
आप OracleCommand को इनकैप्सुलेट करने के लिए एक नया वर्ग भी बना सकते हैं, BindByName को इंस्टेंटेशन पर सही पर सेट कर सकते हैं, इसलिए आपको हर बार मान सेट करने की आवश्यकता नहीं है। इस पोस्ट में इस पर चर्चा की गई है