如何从存储过程中读取c#oracleXmlType
本文关键字:过程中 读取 c#oracleXmlType 存储过程 存储 | 更新日期: 2023-09-27 17:59:17
我正试图以这种方式在存储过程中创建一个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#中我没有任何结果
我做错了什么?
提前感谢
-
运行
SELECT XMLELEMENT("Values",XMLFOREST(de_brand)) FROM tbldevice de
在plsql中将NOT结果为单个值,因此尝试将结果提取到单个变量(INTO xml_out
)将导致运行时错误ORA-01422 -
在Oracle中使用存储过程来选择数据是不相关的,这是SQL Server的一种方法,为什么不使用简单的选择呢
-
这里和这里的例子将展示ODP.Net如何使用XML
您可能需要混合使用ref-cosur和XMLType来解决问题