2012-12-12 2 views
0

У меня очень редкая проблема с Oracle и .NET. У меня есть простой выбор, который извлекает список продуктов, который работает правильно. Но тогда, с хранимой процедурой, она, похоже, не выполняет ее, но в ней ничего не говорится о каких-либо ошибках или параметрах. Он работает корректно при запуске в SQL Developer.Oracle Хранимая процедура не выполняется в .NET?

OracleCommand ora_cmd = new OracleCommand("a6r1.PR_ABC_P_ALTA_TARJETA_PAYWARE", ora_conn); 
ora_cmd.BindByName = true; 
ora_cmd.CommandType = CommandType.StoredProcedure; 

int exito = 0; 

ora_cmd.Parameters.Add("Lc_Param_Issuer", OracleDbType.Varchar2, issuer, ParameterDirection.Input); 
ora_cmd.Parameters.Add("Ln_Param_Valid_Product", OracleDbType.Varchar2, DropDownListProducto.SelectedValue.ToString(), ParameterDirection.Input); 
ora_cmd.Parameters.Add("Ln_Param_Total", OracleDbType.Int32, Convert.ToInt32(TextBoxCantidad.Text) , ParameterDirection.Input); 
ora_cmd.Parameters.Add("Lc_Param_User", OracleDbType.Varchar2, user, ParameterDirection.Input); 
ora_cmd.Parameters.Add("Lc_Encrypted_Password", OracleDbType.Varchar2, pass, ParameterDirection.Input); 
ora_cmd.Parameters.Add("Lc_Exito", OracleDbType.Int32, exito, ParameterDirection.Output); 
/*********************Oracle Command**********************************************************************/ 

ora_cmd.ExecuteNonQuery(); 

СП слишком большой, чтобы разместить здесь, так что я буду только добавить заголовок.

Любая помощь или понимание оценены.

+1

Вы должны отступа код лучше. – gdoron

ответ

0

Попробуйте это:

using Oracle.DataAccess; 
    using Oracle.DataAccess.Client; 

    public DataTable ExecuteSP() 
    { 
     using (OracleConnection cn = new OracleConnection(GetConnectionString())) 
     { 
      OracleDataAdapter da = new OracleDataAdapter(); 
      OracleCommand cmd = new OracleCommand(); 
      cmd.Connection = cn; 
      cmd.CommandText = "PR_ABC_P_ALTA_TARJETA_PAYWARE"; 
      cmd.CommandType = CommandType.StoredProcedure; 
      cmd.BindByName = true; 
      cmd.Parameters.Add("Lc_Param_Issuer", OracleDbType.Varchar2, issuer, ParameterDirection.Input); 
      cmd.Parameters.Add("Ln_Param_Valid_Product", OracleDbType.Varchar2, DropDownListProducto.SelectedValue.ToString(), ParameterDirection.Input); 
      cmd.Parameters.Add("Ln_Param_Total", OracleDbType.Int32, Convert.ToInt32(TextBoxCantidad.Text) , ParameterDirection.Input); 
      cmd.Parameters.Add("Lc_Param_User", OracleDbType.Varchar2, user, ParameterDirection.Input); 
      cmd.Parameters.Add("Lc_Encrypted_Password", OracleDbType.Varchar2, pass, ParameterDirection.Input); 
      cmd.Parameters.Add("Lc_Exito", OracleDbType.Int32, exito, ParameterDirection.Output); 

      cmd.Parameters.Add("T_CURSOR", OracleDbType.RefCursor).Direction = ParameterDirection.Output; 
      da.SelectCommand = cmd; 
      DataTable dt = new DataTable(); 
      da.Fill(dt); 
      return dt; 
     } 
    } 
+0

Пожалуйста, для любви к памяти, оберните это 'OracleDataAdapter' и' OracleCommand' в 'using' заявлениях. –

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