Ado.net OracleCommand不会引发超时异常(执行存储过程)

时间:2018-08-15 11:11:27

标签: c# ado.net oraclecommand

我正在使用System.OracleClient.OracleCommand执行ORACLE存储过程并设置CommandTimeout = 5; (for example)

但是我想设置一个超时时间,以便如果命令对象执行花费的时间超过5分钟,它应该中止(获取异常... OracleException),以便向用户显示错误消息。让我知道如何做到这一点。这是我的书面代码示例。

    try
    {
        _dbConnectionString.Open();               
        var cmdOracle = new OracleCommand("hfghgh", _dbConnectionString)
        {
            CommandType = CommandType.StoredProcedure
        };
        OracleCommandBuilder.DeriveParameters(cmdOracle);               
        cmdOracle.Parameters["inputParam"].Value = 1;                
        tran =_dbConnectionString.BeginTransaction(IsolationLevel.ReadCommitted);
        cmdOracle.Transaction = tran;
        cmdOracle.CommandTimeout = 5;

        await cmdOracle.ExecuteNonQueryAsync();
        tran.Commit();
        return res = cmdOracle.Parameters["outputParam"].Value.ToString();
    }
    catch (OracleException ex)
    {
        dynamic exOra = ex;
        int errorNo = exOra.Number;
        if (errorNo == 01013)
        {
            throw new ResponseFailException(ex);
        }
        else
        {
            throw ex;
        }
    }

0 个答案:

没有答案
相关问题