将c#xml数组转换为oracle存储过程

将c#xml数组转换为oracle存储过程,c#,oracle,C#,Oracle,我有一个包含字符串数据数组的和xml消息,如下所示: <DataList> <Data>some data no 1</Data> <Data>some data no 2</Data> </DataList> 对于阵列: public struct DataList { [XmlElement] public string Data { get; set; } } 因此,我需要将此数组作为输入参

我有一个包含字符串数据数组的和
xml
消息,如下所示:

<DataList>
  <Data>some data no 1</Data>
  <Data>some data no 2</Data>
</DataList>
对于阵列:

public struct DataList
 {
   [XmlElement]
   public string Data { get; set; }
 }
因此,我需要将此数组作为
输入参数
传递给我的
oracle存储过程

我应该如何做到这一点,无论是在oracle方面还是在c#方面?(通过在oracle中创建表\refcursor并将其作为ref cursor传递?或使用
for
循环?)


查看链接答案-只需使用
创建或替换类型stringarray作为CLOB表
(或者,如果xml足够小,您可以尝试
XMLTYPE的TABLE
VARCHAR2的TABLE(4000)
),然后在另一端将其包装在
XMLTYPE()。。。更好的副本应该是或第一个变体:c#parameter.Add(“Data”,OracleDbType.XmlType)。Value=DataList,在oracle中:type data_数组是XMLTYPE;-我得到了c#错误:不支持的列数据类型。第二次尝试:c#参数。添加(“数据”,OracleDbType.Varchar2)。值=数据列表;oracle类型的数据_数组是Varchar2的表;获取oracle错误-调用中参数的数目或类型错误将其作为CLOB的
表传递
或VARCHAR2(4000)的
表传递
(取决于XML数据的最大大小)-您可能还需要使用
按二进制_整数索引
。看见
public struct DataList
 {
   [XmlElement]
   public string Data { get; set; }
 }
parameter.Add("Data", OracleDbType.-don't know-).Value = DataList.Data; or just DataList?