2

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

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

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

[OracleDataParameter("P_INPUT", OracleDbType.RefCursor, ParameterDirection.Input)]
private List<MiObject> cursor;

而且,我尝试用 a , a ,甚至是一个普通的数组来填充光标,但没有任何效果。当我尝试运行测试时,出现错误:List<T>DataTableMyObject

“无效的参数链接”

也许不是确切的措辞,因为我是从西班牙语翻译的,但这就是信息

有任何想法吗?

4

3 回答 3

3

我还与我试图在我的帖子上链接的文章的作者 Mark Williams 保持联系,他的回复是这样的:

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

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

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

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

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

于 2009-06-01T13:05:06.180 回答
0

从记忆中,ODP.NET 库中的某个地方没有一个OracleCursor类可以工作吗?

于 2009-06-01T07:57:57.420 回答
0

查看此示例,将 refcursor 作为 oracle technet 的 pl/sql 输入。

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

于 2009-08-08T21:32:20.640 回答