我正在尝试使用RefCursor
作为Oracle存储过程的输入参数。我们的想法是选择一组记录,将它们提供给存储过程,然后SP在输入RefCursor
上循环,对其记录执行一些操作。不,我无法选择SP内的记录,因此避免使用RefCursor
作为输入类型。
我已经找到了一个关于如何执行此操作的示例(这里将是链接,但似乎我还不能使用它们)Oracle的文档,但它使用简单的SELECT
来填充输入{ {1}};这就是问题:我必须从代码中填充它。
你看,在代码中我有这个:
RefCursor
并且,我尝试使用[OracleDataParameter("P_INPUT", OracleDbType.RefCursor, ParameterDirection.Input)]
private List<MiObject> cursor;
,List<T>
填充游标,甚至是DataTable
的简单数组,但没有任何效果。当我尝试运行测试时出现错误:
“无效的参数链接”
可能不是确切的措辞,因为我正在翻译西班牙语,但这是消息
有什么想法吗?
答案 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。