3

我正在使用 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 对象上的输出光标。

提前致谢!

4

2 回答 2

2

OLE DB 的 Oracle 提供程序将任何引用游标的参数转换为 ADO 记录集,但前提PLSQLRSet=1是添加到您的连接字符串中。

于 2009-06-15T00:55:57.033 回答
1

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

卡洛斯·A·梅里赫。

于 2012-08-22T15:41:22.510 回答