C# 쿼리 구성 요소가 SQL 저장 프로 시저의 임시 테이블에서 리턴 데이터를 인식하도록하려면 어떻게합니까?

StackOverflow https://stackoverflow.com/questions/204155

문제

아래의 것과 유사한 저장된 절차를 만들었습니다 (이 절단 버전을 사용하여 문제를 시도하고 알아 봅니다).

CREATE PROCEDURE bsp_testStoredProc
AS
BEGIN

CREATE TABLE #tmpFiles  
(
    AuthorName NVARCHAR(50), 
    PercentageHigh INT
) 

-- Insert data into temp table

SELECT AuthorName, PercentageHigh FROM #tmpFiles 
ORDER BY PercentageHigh DESC

DROP TABLE #tmpFiles

RETURN 0
END

VS2008의 C# 코드에서 쿼리 구성 요소를 기존 저장 절차를 사용하십시오 결과를 표시하기 위해 이것을 DataTable / DataGridView에 연결하는 옵션.

그러나 임시 테이블에서 선택하기 때문에 쿼리 구성 요소 속성에서 Visual Studio에는 저장된 프로 시저에서 반환되는 열이 표시되지 않습니다. SP가 실제 스키마를 기반으로하지 않기 때문에 사용되는 데이터 유형을 결정하는 데 어려움이 있다고 가정합니다.

실제 테이블에서 선택한 다른 저장 프로 시저에 연결하면 열이 올바르게 표시됩니다.

누구든지 이것에 대해 알고 있습니까? 어떤 종류의 데이터를 반환 할 것인지 명시 적으로 명시하기 위해 어딘가에 추가 할 수있는 힌트가 있습니까?

미리 감사드립니다.

도움이 되었습니까?

해결책

정보의 경우 임시 테이블 (예 : #foo가 아닌 @foo) 대신 "테이블 변수"를 사용하는 것을 고려할 수 있습니다. 이것은 약간 도움이 될 수 있으며, 몇 가지 TempDB 문제에 도움이 될 수 있습니다.

임시 테이블 사용 - SPS 스키마를 명시 적으로 선언 할 방법은 없습니다. 래퍼 클래스를 생성하는 동안 SP의 단순화 된 버전을 사용하는 것이 좋습니다. 즉, 올바른 모양의 사소한 선택을 수행하십시오.

또는 LINQ를 사용하여 UDF를 소비합니다. 하다 명시 적 스키마가 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top