繁体   English   中英

如何从存储过程中读取C#Oracle XmlType

[英]How to read in c# oracle XmlType from store procedure

我正在尝试以这种方式在存储过程中创建XML:

PROCEDURE DeviceSearched(
   xml_out OUT XMLTYPE
)
IS
BEGIN

    SELECT 
      XMLELEMENT("Values", 
          XMLFOREST(de_brand)
    ) 
    INTO xml_out
    FROM 
      tbldevice de 
    ;  

END DeviceSearched;

我试图以这种方式在C#中读取xml_out

...
OracleCommand command = new OracleCommand(name, conn);
command.CommandType = CommandType.StoredProcedure;
command.BindByName = true;
...
command.Parameters.Add(new OracleParameter("xml_out", OracleDbType.XmlType, ParameterDirection.Output));

使用这种方法,问题是两个:

  1. Oracle异常:“ ORA-01422:精确访存返回的行数超过了请求的行数”
  2. 如果我修改查询以获取一行,那么该过程还可以(我认为),但是在C#中我没有任何结果。

我究竟做错了什么?

提前致谢

  • 跑步
    SELECT XMLELEMENT("Values",XMLFOREST(de_brand)) FROM tbldevice de在plsql中不会产生单个值,因此尝试将结果提取到单个变量( INTO xml_out )中将导致运行时错误ORA-01422

  • 使用存储过程选择Oracle中的数据并不方便,这是一种SQL Server方法,为什么不使用简单选择

  • 此处此处的示例将展示ODP.Net如何与XML一起使用
    您可能需要混合使用ref corsur和XMLType来解决此问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM