从 C#,如何将 clob 值传递给 oracle 存储过程
From C#, How to pass a clob value to oracle stored procedure
我的 Oracle 存储过程正在接受 clob 类型参数。
procedure p_insert_data(xml_string in clob)
在 C# 中,我试图通过传递 clob 数据来调用过程,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();
我收到异常
operation not valid due to current state of object
我尝试将 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
对象后,向其中写入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);
我的 Oracle 存储过程正在接受 clob 类型参数。
procedure p_insert_data(xml_string in clob)
在 C# 中,我试图通过传递 clob 数据来调用过程,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();
我收到异常
operation not valid due to current state of object
我尝试将 bytes[]
传递给 clob 参数,而不是 xml 字符串,但仍然没有成功。
我也试过XML,内容比较少。
有人知道我应该如何传递 clob 值吗?
我昨天弄好了,希望对大家有帮助。
我们需要通过创建 OracleClob
对象
OracleClob clob = new OracleClob(connection);
clob.Write(xmlContent.ToArray(), 0, xmlContent.Length);
clob_Param.Value = clob;
其中 clob_Param 的类型为 OracleParameter
。
创建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);