我们可以在存储过程中返回多个结果集以及如何在.net中处理它

时间:2011-05-18 11:07:31

标签: stored-procedures

我们可以在存储过程中返回多个结果集以及如何在.net

中处理它

??? 如果是的话? 如果没有,为什么不? 请解释

2 个答案:

答案 0 :(得分:3)

如果使用DataReader检索数据,则可以使用NextResult方法迭代存储过程返回的多个结果集。可以找到更多信息here. 以下代码是MSDN中的一个简单示例:

static void RetrieveMultipleResults(SqlConnection connection)
{
    using (connection)
    {
        SqlCommand command = new SqlCommand(
          "SELECT CategoryID, CategoryName FROM dbo.Categories;" +
          "SELECT EmployeeID, LastName FROM dbo.Employees",
          connection);
        connection.Open();

        SqlDataReader reader = command.ExecuteReader();

        while (reader.HasRows)
        {
            Console.WriteLine("\t{0}\t{1}", reader.GetName(0),
                reader.GetName(1));

            while (reader.Read())
            {
                Console.WriteLine("\t{0}\t{1}", reader.GetInt32(0),
                    reader.GetString(1));
            }
            reader.NextResult();
        }
    }
}

如果要从DataAdapter填充数据集,请注意,如果DataAdapter遇到多个结果集,它将创建多个DataTable(每个结果集一个)并将它们添加到生成的DataSet中。

答案 1 :(得分:0)

http://msdn.microsoft.com/en-us/library/yf1a7f4f.aspx有一些很好的例子。

您需要更改connectionString以支持它。 MultipleActiveResultSets=True

http://msdn.microsoft.com/en-us/library/h32h3abf.aspx用于配置设置;