【问题标题】:Getting RefCursor and VarChar outputs from the same Stored Procedure从同一个存储过程中获取 RefCursor 和 VarChar 输出
【发布时间】:2013-06-03 15:12:38
【问题描述】:

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

我正在使用 .NET 4 中的 C# 和 ODP11 查询现有的 Oracle DB。到目前为止,所有过程一开始都很难弄清楚,但一旦我弄清楚我在做什么,大多数情况下“刚刚工作” ...这是一个不同的故事...

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

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

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

我可以确认使用 Toad 运行 proc 会返回正确的结果集...

有什么想法吗?我究竟做错了什么?

谢谢。

【问题讨论】:

    标签: c# oracle stored-procedures odp.net data-access


    【解决方案1】:

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

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

    我传递相同的参数和类型(2 个输入,2 个输出,其中一个是字符串,一个是引用)。

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

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

    然后我可以和博士一起做我通常的循环!快乐的日子!

    【讨论】:

    • 你能发布一个链接到你从哪里得到代码吗?
    • 不知道我从哪里得到的...自从我查看该代码以来已经过去了 18 个月左右。我知道它仍然有效并且仍在生产中!
    • @TiernanO 你能帮我解决这个问题吗stackoverflow.com/questions/41306344/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-04
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    相关资源
    最近更新 更多