Eu tenho um método onde desejo executar um procedimento armazenado e obter o status e a resposta dele. Ao executar meu cmd.ExecuteNonQuery()
, estou recebendo um erro:
a operação não é válida devido ao estado atual do objeto
Este é o código:
public static string GET_IPL_STATUS_ON_NEID(string NEID)
{
string strStatus = string.Empty; string strMessage = string.Empty;
OracleConnection conn = new OracleConnection(ConfigurationManager.ConnectionStrings["ConnectionStringAppAuto"].ConnectionString);
try
{
OracleCommand cmd = new OracleCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = ConfigurationManager.AppSettings["GET_IP_STATUS_PROC"].ToString();
cmd.Parameters.Add(new OracleParameter { ParameterName = "P_A6_NEID", Value = NEID, OracleDbType = OracleDbType.Varchar2, Direction = ParameterDirection.Input });
cmd.Parameters.Add(new OracleParameter
{
ParameterName = "STATUS",
OracleDbType = OracleDbType.Varchar2,
Size = 500,
Direction = ParameterDirection.Output
});
cmd.Parameters.Add(new OracleParameter
{
ParameterName = "MESSAGE",
OracleDbType = OracleDbType.Varchar2,
Size = 500,
Direction = ParameterDirection.Output
});
if (conn.State != ConnectionState.Open) conn.Open();
cmd.ExecuteNonQuery();
strStatus = cmd.Parameters["STATUS"].Value.ToString();
strMessage = cmd.Parameters["MESSAGE"].Value.ToString();
}
catch (Exception ex)
{
throw;
}
finally
{
if (conn.State == ConnectionState.Open) conn.Close();
}
return strStatus;
}
Conforme o exemplo da
OracleCommand
documentação , você precisa definir aConnection
propriedade no comando para informar qual conexão usar: