Stored Proc 返回一个 Cursor,如何在 C# 中使用 OLEDB 处理它
我正在使用 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我在查询 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.
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.