[英]From C#, How to pass a clob value to oracle stored procedure
我的 Oracle 存儲過程正在接受一個 clob 類型參數。
procedure p_insert_data(xml_string in clob)
在 C# 中,我試圖通過傳遞 clob 數據(一個 XML 文件)來調用該過程。
以下是我嘗試的方式:
將 XML 轉換為字符串
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(@"D:\Response_min.xml");
string xml = xmlDoc.OuterXml;
將clob數據從C#傳遞給存儲過程
OracleParameter p_data = new OracleParameter("p_xml_string", OracleDbType.Clob);
p_data.Direction = ParameterDirection.Input;
p_data.Value = xml; //xml is of string type
dbCommand.Parameters.Add(p_data);
dbCommand.ExecuteNonQuery();
我得到了例外
由於對象的當前狀態,操作無效
我嘗試將bytes[]
傳遞給 clob 參數而不是 xml 字符串,但仍然沒有運氣。
我還嘗試使用內容較少的 XML。
任何人都知道我應該如何傳遞 clob 值?
我昨天讓它工作了,希望它會幫助某人。
我們需要通過創建OracleClob
對象傳遞給存儲過程的 Clob 數據
OracleClob clob = new OracleClob(connection);
clob.Write(xmlContent.ToArray(), 0, xmlContent.Length);
clob_Param.Value = clob;
其中 clob_Param 的類型為OracleParameter
。
創建OracleClob
對象后, OracleClob
寫入xml內容!!!
另一種方法是將其作為字節數組傳遞,連接需要打開。
connection.Open();
byte[] arrayByte = System.Text.Encoding.Unicode.GetBytes(clobValue);
OracleClob oracleClob = new (connection);
oracleClob.Write(arrayByte, 0, arrayByte.Length);
var clobParam = new OracleParameter("param_clob", OracleDbType.Clob, oracleClob, ParameterDirection.Input);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.