sql >> Database teknologi >  >> RDS >> Oracle

OracleCommand timeout

Du har ikke flere kommandoer kørende på forbindelsen, du har to kommandoer, der kører sekventielt, den ene efter den anden. Når den første kommando timeout, er der ingen anden kommando, der afventer forbindelsen. Din kode sender ikke den anden kommando til udførelse, før den første kommando enten er lykkedes eller har givet en undtagelse.

Det sidste afsnit fra den dokumentation, du citerede, bør læse:I en situation, hvor flere OracleCommand-objekter bruger den samme forbindelse samtidigt , ...

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
    }
}



  1. Sender bordnavnet til markøren

  2. Læs en ARRAY fra en STRUKT returneret af en lagret procedure

  3. Forbedre PostgresSQL-aggregeringsforespørgselsydeevne

  4. Hvordan vælger jeg alle kolonnerne fra en tabel, plus yderligere kolonner som ROWNUM?