2011-01-05 4 views
2

저장 프로 시저를 결과 테이블의 이름을 설정합니다.저장 프로 시저에 복수의 결과를 돌려

DataSet ds; 
SqlDataAdapter da = new SqlDataAdapter(cmd); 
da.Fill(ds); 

결과를 얻을 수 있습니다. 그러나 나는 우리가 이것보다 더 잘 할 수 있다고 생각 : 우리가 이름 대신 인덱스 테이블을 얻을 수 있다면

var index = 0; 
if(ds.Tables.Count > 1){ 
    DataTable first = ds.Tables[index];  
    index++; 
    // do something 
} 
DataTable second = ds.Tables[index]; 
// do something 

가 궁금 해요. like ..

DataTable first = ds.Tables["first"]; 
// do something 
if(ds.Tables.Containts("second")) 
{ 
    DataTable second = ds.Tables["second"]; 
    // do something 
} 

질문 : 저장 프로 시저에서 결과 테이블의 이름을 설정할 수 있습니까?

답변

2

아니겠습니까? 그리고 어느 정도는 이것을 처리하는 것이 좋은 방법이라고 생각하지 않습니다. 왜 그런 경우에 빈 결과 집합을 반환하지 않는 것은 항상 n 번째 결과 집합이 의미하는 것보다 낫습니다.

결과를 일반 텍스트로 렌더링하는 경우 외에 복잡한 논리가 필요하지 않은 경우 결과의 다른 경우를 처리해야합니다.

왜 하시겠습니까? 성능 향상을위한 신비한 소망?

ad hoc 쿼리의 경우 저장 프로 시저에 대해서는 문제가 없지만 괜찮을 수 있습니다. 두 번 생각하는 것이 더 낫습니다.

아마도 필자의 태도는 오라클로 그러한 절차를 변환해야한다는 사실에 영향을 받았을 것입니다. 거기에는 다양한 결과 세트 개념이 없습니다. 각 결과 집합에 대해 미리 refcursor 매개 변수를 제공해야합니다.

+1

결과 테이블의 이름을 지정할 수없는 경우 빈 결과를 반환하는 것이 좋습니다. 조언과 공유에 감사드립니다. –

+0

예, 성능을 향상시키는 것은 신비한 소원입니다. 데이터베이스 왕래를 줄이려고합니다. –

관련 문제