2009-12-18 2 views
2

세 개의 레코드 집합을 반환하는 저장 프로 시저가 있습니다. 여기 Studio에서 호출됩니다.SqlDataReader에 세 번째 레코드 집합이 없습니다.

EXEC CampaignData '007CF7F8-AE8D-DE11-8BBA-0003FF4C13C9' 

나는 잘라 붙여 관리 Studio에서 레코드 세트를하지만, 두 번째는 세 개의 행이, 첫 번째는이 개 값을 하나 개의 행이 세 가지 기록 세트를 보여 주며, 세 번째는 2 개 행이 저를 믿을 수 없다.

는 여기를

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); 
} 

다음을 (읽기 내 C#) 단지 NextResult가 리더에 호출합니다. 마지막 행에 도달하면 판독기에 행이 없습니다. 마지막 레코드 집합과 마찬가지로 행이 반환되지 않았습니다. 그러나 그것은 그렇다. 나머지 모든 값은 정상적으로 반환됩니다.

아무도 아이디어가있을 수 있습니까?

답변

2

"EmailTemplates. 로드 (daResult.Reader);"
로드 메서드는로드 된 IDataReader에서 첫 번째 결과 집합을 소비하고 성공적으로 완료된 후 독자의 위치를 ​​다음 결과 집합 (있는 경우)으로 설정합니다.
그래서 코드 줄만 제거하면됩니다 : "daResult.Next();"

+0

글쎄, 나는 결코. 나는 결코 그것을 새롭게하지 않았고 이제는 내가 사용한 다른 모든 장소를 살펴 본다. DataTable로드는 마지막으로 수행 된 작업이다. 이제 치료를합니다. 2 시간 전에 물었 으면 좋겠어. –

관련 문제