簡體   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