在C#中控制SQL存储过程的多个输出

时间:2009-08-17 08:53:11

标签: c# sql stored-procedures

有谁能告诉我如何控制返回多组输出的SQL存储过程的输出?

我目前正在做以下事情:

        DataTable allData = new DataTable();
        SqlConnection connection = new SqlConnection(mySource);

        SqlCommand cmd = new SqlCommand(procedureName, connection);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.Add(paramName, SqlDbType.Int);
        cmd.Parameters[paramName].Value = paramValue;

        connection.Open();

        SqlDataAdapter adapter = new SqlDataAdapter(cmd);
        adapter.Fill(allData);

        connection.Close();

现在,如果过程只有一个输出值,这可以正常工作,但我该如何处理以下内容:

我的存储过程大致执行以下操作:

它调用了许多其他存储过程来构造动态SQL查询(让我们调用这个@query),然后调用执行SELECT的EXECUTE(@query)。

使用上面的代码片段返回SELECT查询的结果,这很好。但我也想要它,所以返回字符串@query。我可以将它指定为输出类型并让SQL获取它,但是如何从c#访问它? (实际上,更具体地说,当我这样做时,上面剪切的代码只返回字符串@query并且不再返回SELECT的结果)

由于

卡尔

2 个答案:

答案 0 :(得分:3)

你可以这样做:

 DataSet allData = new DataSet ();
 ...
 ...
 ...
  adapter.Fill(allData);

然后select的每个结果都在不同的dataTable

答案 1 :(得分:3)

使用SqlDataReader.NextResult。 这一点让你转移使用SqlDataAdapter,但你仍然可以使用DataTable.Load填充DataTable