我有一个存储过程,它返回三个记录集。这是在Studio中调用的。
EXEC CampaignData '007CF7F8-AE8D-DE11-8BBA-0003FF4C13C9'
我无法从Management Studio剪切和粘贴记录集,但相信我它会显示三个记录集,第一个记录集有一行有2个值,第二行有三行,第三行有2行。
这是我的c#读它
using (DAResult daResult = DA.SP.CampaignData(new Guid("007CF7F8-AE8D-DE11-8BBA-0003FF4C13C9")).Execute())
{
daResult.Read();
UserCount = daResult.ValueInt("UserCount");
ProspectCount = daResult.ValueInt("ProspectCount");
daResult.Next();
EmailTemplates = new DataTable();
EmailTemplates.Load(daResult.Reader);
daResult.Next();
SMSTemplates = new DataTable();
SMSTemplates.Load(daResult.Reader);
}
Next()只需在Reader上调用NextResult即可。 当我到达最后一行时,阅读器中没有行。像最后一个记录集一样没有返回任何行。它确实如此。其余所有值都可以正常返回。
有没有人知道为什么会这样?
答案 0 :(得分:2)
“EmailTemplates的负载强>(daResult.Reader);”
加载 方法使用加载的IDataReader中的第一个结果集,成功完成后,将读者的位置设置为下一个结果集(如果有)。
所以你应该只删除代码行:“daResult.Next();”