Reputation: 755
I'm stuck on this issue. Please help.
OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
cmd.CommandTimeout = 0;
cmd.CommandText = "hhrcv_upsert_grv_sku";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("pv_delivery_bay_code", OracleDbType.VarChar).Value = this.bayCode.ToString();
cmd.Parameters.Add("pn_company_id_no", OracleDbType.Number).Value = lblCompany_id_no.Text.ToString();
cmd.Parameters.Add("pn_order_no", OracleDbType.Number).Value = this.orderCode.ToString();
cmd.Parameters.Add("pn_sku_id_no", OracleDbType.Number).Value = lblSku_id_no.Text.ToString();
cmd.Parameters.Add("pn_price", OracleDbType.Number).Value = txtPrice.Text.ToString();
cmd.Parameters.Add(new OracleParameter("pv_error", OracleDbType.VarChar));
cmd.Parameters["pv_error"].Direction = ParameterDirection.Output;
string pv_error;
conn.Open();
cmd.ExecuteNonQuery();
pv_error = (string)cmd.Parameters["pv_error"].Value;
if (cmd.Parameters["pv_error"].Value.ToString().Equals("Invalid"))
{
MessageBox.Show("Invalid");
}
else
{
MessageBox.Show("valid");
}
Getting InvalidCastException was unhandled on the line that reads pv_error = (string)cmd.Parameters["pv_error"].Value;
Not sure how to fix.
thanks.
Upvotes: 0
Views: 457
Reputation: 2487
Try
Convert.ToString(cmd.Parameters["pv_error"].Value)
Convert.ToString() handles null.
Upvotes: 1
Reputation: 3723
it would be useful to see the actual value of pv_error
that is causing the exception, but since pv_error
is an output parameter - if there is no 'error', it will come out as NULL
and therefore cause an InvalidCastException
I think some checking prior to setting would solve the problem.
Upvotes: 0
Reputation: 27934
the type of Parameters["pv_error"].Value is probably not a string.
pv_error = (string)cmd.Parameters["pv_error"].Value;
try to replace it with:
pv_error = cmd.Parameters["pv_error"].Value.ToString();
As you do in the next line. And you have to test if Value != null.
Upvotes: 2
Reputation: 2439
You can try like this.
OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
cmd.CommandTimeout = 0;
cmd.CommandText = "hhrcv_upsert_grv_sku";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("pv_delivery_bay_code", OracleDbType.VarChar).Value = this.bayCode.ToString();
cmd.Parameters.Add("pn_company_id_no", OracleDbType.Number).Value = lblCompany_id_no.Text.ToString();
cmd.Parameters.Add("pn_order_no", OracleDbType.Number).Value = this.orderCode.ToString();
cmd.Parameters.Add("pn_sku_id_no", OracleDbType.Number).Value = lblSku_id_no.Text.ToString();
cmd.Parameters.Add("pn_price", OracleDbType.Number).Value = txtPrice.Text.ToString();
var pv_error = cmd.Parameters.Add(new OracleParameter("pv_error", OracleDbType.VarChar));
pv_error.Direction = ParameterDirection.Output;
conn.Open();
cmd.ExecuteNonQuery();
if (pv_error.Value.ToString().Equals("Invalid"))
{
MessageBox.Show("Invalid");
}
else
{
MessageBox.Show("valid");
}
Upvotes: 0