2013-06-24 2 views
0

나는 CLR 저장 프로 시저에서 데이터를 반환하기 위해 과거에이 같은 코드를 사용한 저장 :반환 표는 절차

SqlCommand command = new SqlCommand("select * from accounts", connection) 
SqlDataReader r = command.ExecuteReader(); 
SqlContext.Pipe.Send(r); 
지금은 오히려 너무 (A 사이베이스 ASE 데이터베이스에 액세스하는 ODBC를 사용할 필요가

SqlCommand를 사용하는 것보다 OdbcConnection과 함께 OdbcCommand를 사용할 것입니다. OdbcDataReader를 사용하여 결과 집합을 가져올 수 있지만 SqlContext.Pipe에 입력 할 수는 없습니다.

SqlContext에 해당하는 Odbc가 있습니까? 아니면 아무에게도 결과 집합을 반환하는 방법을 알려줄 수 있습니까?

답변

0

제 생각에 컨텍스트 연결에서 비롯되지 않은 결과를 보내는 유일한 방법은 새로운 결과 집합 메타 데이터 개체를 작성한 다음 한 번에 하나씩 행을 보내는 것입니다. 같은

뭔가 :

private static void sendResultsetRecords(SqlDataReader dataReader) 
    { 
     SqlMetaData[] meta = createMetaDataForResultset(dataReader); 

     SqlContext.Pipe.SendResultsStart(new SqlDataRecord(meta)); 
     sendEachRecordOfData(dataReader, meta); 
     SqlContext.Pipe.SendResultsEnd(); 
    } 

당신은 tSQLt database unit testing framework for SQL Server의 일부입니다 tSQLt.ResultsetFilter 방법의 완전한 구현을 찾을 수 있습니다. http://sourceforge.net/p/tsqlt/code/HEAD/tree/tSQLtCLR/tSQLtCLR/ResultSetFilter.cs#l56

+0

덕분에, 나는이 살펴 보겠습니다 :

관련 코드

이 파일의 56 행에서 시작한다. –

+0

SQL Server 대신 ODBC 형식으로 일부 기능을 변경해야했지만 처리가 완료되었습니다. –