Вопрос

Я использую ODP.NET (миграция от поставщика Microsoft), и я застрял на хранимой процедуре, которая возвращает refcursor.У меня есть следующая процедура PL / SQL (я немного изменил ее, чтобы сделать более общей):

PROCEDURE MyProc(parameter_no1 IN NUMBER, parameter_no2 IN NUMBER, RETCURSOR OUT ret_type) AS
BEGIN
  OPEN RETCURSOR FOR
  SELECT   ad.logo logo 
  FROM    tab_a a, tab_h h 
  WHERE  a.id IS NOT NULL 
  AND    a.h_id = h.id 
  AND    a.no1 = parameter_no1
  AND    a.no2= parameter_no2;
END HanteraLogotype;

И тогда у меня есть следующий код на C # для его вызова:

internal void RefCursorDataReader()
{
  OracleCommand cmd = new OracleCommand("ABC$MYPACKAGE.MyProc", new OracleConnection(_constr));
  cmd.CommandType = CommandType.StoredProcedure;
  cmd.Connection.Open();
  cmd.BindByName = true;

  OracleParameter p = cmd.Parameters.Add("parameter_no1", OracleDbType.Decimal);
  p.Value = 12345678;
  p.Direction = ParameterDirection.Input;

  p = cmd.Parameters.Add("parameter_no2", OracleDbType.Decimal);
  p.Value = 123456;
  p.Direction = ParameterDirection.Input;

  p = cmd.Parameters.Add("RETCURSOR", OracleDbType.RefCursor);
  p.Direction = ParameterDirection.Output;

  OracleDataReader reader = cmd.ExecuteReader();

  if (reader.Read())
  {
    System.Diagnostics.Debug.WriteLine(reader[0].GetType().ToString());
  }

  cmd.Connection.Close();
}

И когда я запускаю это, я продолжаю получать это исключение:

ORA-03106:неустранимая ошибка протокола связи для двух задач

Я перепробовал множество различных вариантов параметров, их типа, порядка и т.д., но, похоже, ничего не помогает.Это тот самый reader.Read() это создает исключение.Я был бы действительно признателен за помощь в этом вопросе!

Добавленный:ret_type определяется как:

ТИП ret_type - ЭТО КУРСОР ССЫЛКИ;

Это было полезно?

Решение

Это похоже на ошибку.Ошибка 3106 - это серьезная ошибка, которая никогда не должна произойти.Хотя я уверен, что есть обходной путь!!

Лучшее место, где можно задавать вопросы ODP.NET вопросы закончены на OTN ODP.NET форум.На вашем месте я бы разместил это вон там:

http://forums.oracle.com/forums/forum.jspa?forumID=146&start=0

Также найдите на этом конкретном форуме "3106".

Другие советы

Я обновился до 11G ODP.NET

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top