Stored Proc 返回一个 Cursor,如何在 C# 中使用 OLEDB 处理它

发布于 2024-07-25 09:13:06 字数 1138 浏览 9 评论 0原文

我正在使用 OLEDB 驱动程序调用 Oracle DB 中的存储过程。 存储过程返回一个游标作为输出。 我可以使用 Oracle 数据源 (System.Data.Oracle.OracleCommand) 调用此存储过程,但是我不知道如何使用 OLEDB 数据源调用此 SP。 任何关于如何指定 SP 返回光标作为使用 OLEDB 的输出的帮助将不胜感激。


private static OracleCommand CreateOraStoredProcCmd()
                {
                        string storedProcName = "pkg_query.prc_get_my_trades";
                        OracleCommand cmd = new OracleCommand(storedProcName);
                        cmd.CommandType = CommandType.StoredProcedure;
                        cmd.Parameters.AddWithValue("book_list", "Jan, Feb");
                        cmd.Parameters.AddWithValue("maturity_date_start", DateTime.Now.ToString("dd-MMM-yyyy"));
                        cmd.Parameters.AddWithValue("maturity_date_end", DateTime.Now.ToString("dd-MMM-yyyy"));
                        cmd.Parameters.AddWithValue("ccy_list", "GBP,USD");
                        cmd.Parameters.Add("trades", OracleType.Cursor).Direction = ParameterDirection.Output;
                        return cmd;
                }

我不知道如何指定参数“trades”是 OledbCommand 对象上的输出游标。

提前致谢!

I am using OLEDB driver to call a Stored Procedure in Oracle DB.
The Stored Proc returns a cursor as the output.
I am able to call this Stored Proc using Oracle Data Source (System.Data.Oracle.OracleCommand), However I do not know how to call this SP using the OLEDB data source. Any help on how to specify the SP is returning a cursor as the output using OLEDB would be greatly appreciated.


private static OracleCommand CreateOraStoredProcCmd()
                {
                        string storedProcName = "pkg_query.prc_get_my_trades";
                        OracleCommand cmd = new OracleCommand(storedProcName);
                        cmd.CommandType = CommandType.StoredProcedure;
                        cmd.Parameters.AddWithValue("book_list", "Jan, Feb");
                        cmd.Parameters.AddWithValue("maturity_date_start", DateTime.Now.ToString("dd-MMM-yyyy"));
                        cmd.Parameters.AddWithValue("maturity_date_end", DateTime.Now.ToString("dd-MMM-yyyy"));
                        cmd.Parameters.AddWithValue("ccy_list", "GBP,USD");
                        cmd.Parameters.Add("trades", OracleType.Cursor).Direction = ParameterDirection.Output;
                        return cmd;
                }

I do not know how to specify the parameter "trades" is an output cursor on the OledbCommand object.

Thanks in advance!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

夏至、离别 2024-08-01 09:13:07

我在查询 Oracle 数据库时遇到问题,PLSQLRSet=1 解决了我的问题。 我只是将其附加到我的连接字符串中(以;结尾)。

卡洛斯·A·梅里盖.

I was having an issue querying an Oracle database,and PLSQLRSet=1 resolved my problem. I just appended it to my connection string (ending with ;).

Carlos A Merighe.

遮云壑 2024-08-01 09:13:06

Oracle Provider for OLE DB 会将引用游标的所有参数转换为 ADO 记录集,但前提是将 PLSQLRSet=1 添加到连接字符串中。

The Oracle Provider for OLE DB converts any parameters that reference cursors into an ADO Recordset, but only if PLSQLRSet=1 is added to your connection string.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文