从同一个存储过程获取RefCursor和VarChar输出



我是Oracle的新手,所以请温柔…

我正在使用c#和。net 4中的ODP11查询现有的Oracle DB。到目前为止,所有的程序都是,嗯,一开始弄清楚是很痛苦的,但一旦我明白我在做什么,大部分都"奏效了"……这是一个不同的故事…

我有一个存储过程,它有4个参数:2个输入和2个输出…这两个输入是大的。其中一个输出是Varchar2,另一个是refcursor。

我使用OracleDataReader来运行查询,就像我使用任何其他返回RefCursor的过程一样,但在这个过程中,reader.Read()不断返回false,我没有得到数据。但是,另一个Output变量包含数据(字符串)。

我已经尝试使用reader.NextResult(),但它也返回false,我的reader.Read()仍然返回false…

我可以确认使用Toad运行过程返回正确的结果集…

任何想法?我做错了什么?

谢谢。

好的,所以经过更多的挖掘,我找到了解决方案。

原始代码正在使用ExecuteReader。我已将其更改为运行ExecuteNonQuery。

我传递了与之前相同的参数和类型(2个输入,2个输出,其中一个是字符串,一个是refcursor)。

当ExecuteNonQuery运行时,我可以看到第三个参数(字符串)的值。然后我做以下操作:

OracleDataReader dr = ((OracleRefCursor)pRefcursor.Value).GetDataReader();

然后我可以用dr做我通常的循环!快乐的日子!

相关内容

  • 没有找到相关文章

最新更新