Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 并行编程中的oracle ExecuteScalar有时返回null_C#_Oracle_Executescalar - Fatal编程技术网

C# 并行编程中的oracle ExecuteScalar有时返回null

C# 并行编程中的oracle ExecuteScalar有时返回null,c#,oracle,executescalar,C#,Oracle,Executescalar,我使用并行编程来执行两个并行oracle数据库查询。 有时res对象返回为null。 知道为什么吗?请注意,这是同一个表的计数查询,没有任何内容会修改此表,因此数据库表和查询不会更改 string query = "select count(*) from SALES_ADVENTUREWORKS2012.SALESORDERDETAIL where PRODUCTID=709"; tasks[0] = Task.Factory.StartNew(() => db.ExecScalarQu

我使用并行编程来执行两个并行oracle数据库查询。 有时res对象返回为null。 知道为什么吗?请注意,这是同一个表的计数查询,没有任何内容会修改此表,因此数据库表和查询不会更改

string query = "select count(*) from SALES_ADVENTUREWORKS2012.SALESORDERDETAIL where PRODUCTID=709";
tasks[0] = Task.Factory.StartNew(() => db.ExecScalarQuery(query));
tasks[1] = Task.Factory.StartNew(() => db.ExecScalarQuery(query));
Task.WaitAll(tasks);
//---------------
public void ExecScalarQuery(String query)
{
    OracleConnection conn = new OracleConnection(connectionString);
    try
    {
        conn.Open();
        OracleCommand cmd = new OracleCommand();
        cmd.Connection = conn;
        cmd.CommandText = query;// "select count(*) from SALES_ADVENTUREWORKS2012.SALESORDERDETAIL where PRODUCTID=709";
        cmd.CommandType = CommandType.Text;
        cmd.CommandTimeout = QUERY_TIMEOUT;
        Object res cmd.ExecuteScalar();
    }
    finally
    {
        conn.Close();
    }
}

正如我所知,如果您在JDBC中关闭一个连接,其依赖的res也将关闭。

但我并行使用了两个连接。那不可能吗?在MS SQL中,我们使用MultipleActiveResultSet,所以我认为oracle中也应该有类似的东西。