2016-11-15 3 views
0

У меня есть этот кусок кода thta выполняет PL/SQL:Как проверить возвращаемое значение переменной в PL/SQL в ODP.NET

 using (PedidoEntities db = new PedidoEntities()) 
     { 
      OracleParameter p_existe = new OracleParameter("p_existe", OracleDbType.Int32); 
      p_existe.Direction = System.Data.ParameterDirection.ReturnValue; 
      OracleParameter p_modulo = new OracleParameter("p_modulo", OracleDbType.Int32); 
      p_modulo.Direction = System.Data.ParameterDirection.Input; p_modulo.Value = (int)modulo; 
      OracleParameter p_usuario = new OracleParameter("p_usuario", OracleDbType.Varchar2); 
      p_usuario.Direction = System.Data.ParameterDirection.Input; p_usuario.Value = usuario; p_usuario.Size = usuario.Length; 
      string sql = @"begin 
          select 1 
          into :p_existe 
          from PERMISOS P 
          inner join USUARIO U ON U.USUARIO = P.USUARIO 
          where P.MODULO = :p_modulo 
            and U.NOMBRE = :p_usuario; 
          exception 
          when no_data_found then 
           :p_existe := 0; 
          end;"; 
      db.Database.ExecuteSqlCommand(sql, p_existe, p_modulo, p_usuario); 
      return p_existe.Value.Equals(1); 
     } 

Проблема в том, что возвращаемое значение является INT что мне нужно протестировать против 1 или 0. Я могу просто использовать p_existe.Value.ToString(), но он работает, однако я хочу сделать проверку как число, так как это число. Как мне это сделать? Любые броски, которые я пробовал, не работают.

ответ

0

Finall Я использовал этот код:

return ((OracleDecimal)p_existe.Value).Value.Equals(1) 

Это работает.

Смежные вопросы