मैं वास्तव में हालांकि आप चीजों की कल्पना कर रहे थे जब मैंने आपकी पोस्ट पढ़ी। उत्सुकतावश, मैंने इसे आजमाया और चकित रह गया कि यह त्रुटि वास्तव में होती है।
अच्छी खबर है। मैंने इधर-उधर देखा और पाया:
यह पता चला है कि एलओबी के साथ अपडेट स्टेटमेंट का उपयोग करते समय, एलओबी को पहले पैरामीटर में घोषित किया जाना चाहिए। इसे ध्यान में रखते हुए, मुझे वही त्रुटि मिली जो आपने अपने कोड के साथ की थी, लेकिन इसने पूरी तरह से काम किया:
public static bool StoreBlobImage(OracleConnection conn, string ArtNr, byte[] bImageJpg)
{
bool Ok = false;
string Sql = "update MyTable set Image = :Image where ArtNr = :ArtNr";
using (OracleCommand cmd = new OracleCommand(Sql, conn))
{
cmd.Parameters.Add("Image", OracleDbType.Blob).Value = bImageJpg;
cmd.Parameters.Add("ArtNr", OracleDbType.Varchar2, 8).Value = ArtNr;
try
{
cmd.ExecuteNonQuery();
}
catch (Exception TheException)
{
}
}
return Ok;
}
बस पैरामीटर स्विच करके।
मैंने उस मूल प्रश्न (इस मामले में वही लड़का) के प्रश्न और उत्तर के लिए प्रशंसा दी।
आप सही कह रहे हैं, Oracle में BLOB पर अपडेट के लिए मदद के लिए वेब पर बहुत कम कीमती है।
बढ़िया सवाल। मुझे लगता है कि मैंने आज कुछ सीखा।
-- संपादित करें --
ओपी के सुझाव के अनुसार, ऊपर संदर्भित एक ही धागे के अनुसार, एक और फिक्स है, जो मापदंडों को पुनर्व्यवस्थित करने की आवश्यकता को रोक सकता है। मेरा अनुमान है कि यदि आप एक से अधिक LOB अपडेट कर रहे हैं तो यह भी काम आ सकता है।
BindByName
स्विच करना ऐसा प्रतीत होता है कि संपत्ति भी समस्या का समाधान करती है:
cmd.BindByName = true;