有谁能告诉我如何控制返回多组输出的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的结果)
由于
卡尔
答案 0 :(得分:3)
你可以这样做:
DataSet allData = new DataSet ();
...
...
...
adapter.Fill(allData);
然后select的每个结果都在不同的dataTable
中答案 1 :(得分:3)
使用SqlDataReader.NextResult。 这一点让你转移使用SqlDataAdapter,但你仍然可以使用DataTable.Load填充DataTable