Pergunta

Eu estou usando ODP.NET (migrando de provedor da Microsoft), e eu tenho preso em um procedimento armazenado que retorna um refcursor. Eu tenho o seguinte procedimento PL / SQL (eu mudei-lo um pouco para torná-lo mais geral):

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;

E então eu tenho o código folloing C # para chamá-lo:

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();
}

E quando eu corro isso, eu continuo recebendo essa exceção:

ORA-03106: fatal de duas tarefa de erro protocolo de comunicação

Eu tentei inúmeras variações diferentes de parâmetros, seu tipo, ordem etc, mas nada parece ajudar. É o reader.Read() que lança a exceção. Eu realmente aprecio ajuda em um presente!

Adicionado: o ret_type é definido como:

TIPO ret_type IS REF CURSOR;

Foi útil?

Solução

que se parece com um bug. O erro 3106 é um erro ruim que nunca deveria acontecer. Eu tenho certeza que há uma solução alternativa embora !!

O melhor lugar para fazer perguntas ODP.NET é longo no fórum ODP.NET OTN. Se eu fosse você eu iria postar isso lá:

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

Procure também nesse fórum especial para "3106"

Outras dicas

I atualizado para 11G ODP.NET

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top