如何从存储过程中读取 c# oracle XmlType
Posted
技术标签:
【中文标题】如何从存储过程中读取 c# oracle XmlType【英文标题】:How to read in c# oracle XmlType from store procedure 【发布时间】:2013-02-15 09:45:12 【问题描述】:我正在尝试以这种方式在存储过程中创建 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));
使用这种方法有两个问题:
-
Oracle 异常:“ORA-01422:精确提取返回的行数超过了请求的行数”
如果我修改查询以获取一行,程序是好的(我认为),但在 c# 中我没有任何结果。
我做错了什么?
提前致谢
【问题讨论】:
有没有关于它的完整源代码示例? 【参考方案1】:跑步SELECT XMLELEMENT("Values",XMLFOREST(de_brand)) FROM tbldevice de
在 plsql 中将 NOT 产生单个值,因此尝试将结果提取到单个变量 (INTO xml_out
) 将导致运行时错误 ORA-01422
不了解在 Oracle 中使用存储过程选择数据,它是一种 SQL Server 方法,为什么不使用简单的选择
示例 here 和 here 将展示 ODP.Net 如何使用 XML 你可能需要混合使用 ref corsur 和 XMLType 来解决这个问题
【讨论】:
以上是关于如何从存储过程中读取 c# oracle XmlType的主要内容,如果未能解决你的问题,请参考以下文章
请问如何从数据库中读取一个存储过程并把查询结果生成一个xml文件(c#)