0

我试图弄清楚如何定义和检索 Oracle OUTPUT 参数,该参数是 C# 中的 UDT(object) 表。

具体来说,我使用的是 C#、.NET 4.0 和 Oracle.ManagedDataAccess

我似乎找不到针对这个特定问题的正确示例 - 尽管我找到了各种类似的建议和解决方案,其中返回类型是简单的 OracleDBType 而不是 UDT 对象表。

假设以下示例:

create or replace TYPE  tsv 
as
object ( valuedate date, value binary_double, code number );

create or replace TYPE tsv_array 
as table of tsv;

create or replace procedure sp_example (p_values OUT tsv_array , p_id IN     Varchar2 )
is
  l_values tsv_array;
begin
...
select field1, field2, field3
   bulk collect
   into l_values
   from table(some_stuff);

   p_values := l_values;
end;

根据一些示例,我认为 OacleDbType.Object 可能有用,但它似乎不是我正在使用的 Oracle.ManagedDataAccess 的一部分。

有人可以帮助我了解我将如何做吗?

1 - 正确定义输出参数(例如 new OracleParameter("p_values", OracleDbType.?,...)

2 - 访问/处理输出参数的UDT返回表

非常感谢您的帮助!

4

1 回答 1

0

ODAC 的托管版本不支持 UDT。您必须使用非托管版本或第三方 Oracle 驱动程序,例如 Devart,顺便说一下,它对 UDT 的支持更加智能,您无需提前为每个 UDT 创建特定的类。

于 2016-02-02T08:57:32.783 回答