使用引用游标作为ODP.NET的输入类型

时间:2009-06-01 07:53:01

标签: c# oracle odp.net ref-cursor

我正在尝试使用RefCursor作为Oracle存储过程的输入参数。我们的想法是选择一组记录,将它们提供给存储过程,然后SP在输入RefCursor上循环,对其记录执行一些操作。不,我无法选择SP内的记录,因此避免使用RefCursor作为输入类型。

我已经找到了一个关于如何执行此操作的示例(这里将是链接,但似乎我还不能使用它们)Oracle的文档,但它使用简单的SELECT来填充输入{ {1}};这就是问题:我必须从代​​码中填充它。

你看,在代码中我有这个:

RefCursor

并且,我尝试使用[OracleDataParameter("P_INPUT", OracleDbType.RefCursor, ParameterDirection.Input)] private List<MiObject> cursor; List<T>填充游标,甚至是DataTable的简单数组,但没有任何效果。当我尝试运行测试时出现错误:

  

“无效的参数链接”

可能不是确切的措辞,因为我正在翻译西班牙语,但这是消息

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

我也与马克·威廉姆斯有过接触,马克·威廉姆斯是我试图在我的帖子上链接的文章的作者,他已经像这样回应:

” 给我发电子邮件没问题;但是,我想我会对你的回答让你失望。

不幸的是,你不能做你想做的事情(从客户端那样创建一个refcursor)。

有两个问题是refcursor是指Oracle在服务器上拥有的内存,而Oracle没有客户端项目的概念,如DataTable或.NET List等。

除了使用refcursor之外,您还有其他可用选项吗? “

所以基本上我搞砸了,这个问题已经结束了。感谢您阅读和/或尝试提供帮助,大家。

答案 1 :(得分:0)

从内存中,ODP.NET库中某处的OracleCursor类是否有效?

答案 2 :(得分:0)

this sample作为refcursor作为来自oracle technet的pl / sql的输入。

clou是输入refcursor对象必须由oracle自己创建。您无法将列表或其他任何内容转换为refcursor。