Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Tempo limite do OracleCommand


Você não tem vários comandos rodando na conexão, você tem dois comandos rodando sequencialmente, um após o outro. Quando o primeiro comando expira, não há outro comando pendente na conexão. Seu código não envia o segundo comando para execução até que o primeiro comando seja bem-sucedido ou tenha gerado uma exceção.

O último parágrafo da documentação que você citou deve ser:Em uma situação em que vários objetos OracleCommand usam a mesma conexão simultaneamente , ...
static void Main(string[] args)
{
    using (var conn = new OracleConnection("Pooling=False;...")) // why?
    using (var cmd1 = conn.CreateCommand())
    using (var cmd2 = conn.CreateCommand())
    {
        cmd1.CommandText = "UPDATE employee SET empname = 'temp1' WHERE id = 1";
        cmd2.CommandText = "UPDATE employee SET empname = 'temp2' WHERE id = 2";
        cmd1.CommandTimeout = 30;
        cmd2.CommandTimeout = 30;

        conn.Open();

        // there are no commands on conn yet

        try { cmd1.ExecuteNonQuery(); } // cmd1 is the only command on conn
        catch (OracleException) { } // if timeout, no other command affected

        // cmd1 is no longer on conn

        try { cmd2.ExecuteNonQuery(); } // cmd2 is the only command on conn
        catch (OracleException) { } // if timeout, no other command affected

        // cmd2 is no longer on conn
    }
}