Stored Proc возвращает курсор, как это сделать, используя OLEDB в C # - PullRequest
2 голосов
/ 14 июня 2009

Я использую драйвер OLEDB для вызова хранимой процедуры в БД Oracle. Stored Proc возвращает курсор в качестве вывода. Я могу вызвать этот хранимый процесс с помощью источника данных Oracle (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.

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 22 августа 2012

У меня возникла проблема с запросом базы данных Oracle, и PLSQLRSet = 1 решил мою проблему. Я просто добавил его в строку подключения (оканчивается на;).

Карлос Мериге.

1 голос
/ 15 июня 2009

Поставщик Oracle для OLE DB преобразует все параметры, которые ссылаются на курсоры, в набор записей ADO, но только если PLSQLRSet=1 добавлено в строку подключения.

...