Я использую драйвер OLEDB для вызова хранимой процедуры в Oracle DB. Хранимый Proc возвращает курсор в качестве вывода. Я могу назвать этот хранимый процесс с использованием Oracle Data Source (System.Data.Oracle.OracleCommand), однако я не знаю, как вызвать этот SP с использованием источника данных OLEDB. Любая помощь в том, как указать 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.
Спасибо заранее!
У меня возникла проблема с запросом базы данных Oracle, и PLSQLRSet = 1 разрешила мою проблему. Я просто добавил его к моей строке соединения (заканчивая на;).
Карлос А Мериг.
Поставщик Oracle для OLE DB преобразует любые параметры, которые ссылаются на курсоры в набор записей ADO, но только если PLSQLRSet=1
добавлен в вашу строку соединения.