SqlPipe.SendResultsStart(SqlDataRecord) 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
클라이언트로 다시 보낼 결과 집합의 시작 부분을 표시하고 레코드 매개 변수를 사용하여 결과 집합을 설명하는 메타데이터를 만듭니다.
public:
void SendResultsStart(Microsoft::SqlServer::Server::SqlDataRecord ^ record);
public void SendResultsStart (Microsoft.SqlServer.Server.SqlDataRecord record);
member this.SendResultsStart : Microsoft.SqlServer.Server.SqlDataRecord -> unit
Public Sub SendResultsStart (record As SqlDataRecord)
매개 변수
- record
- SqlDataRecord
메타데이터가 추출되고 결과 집합을 설명하는 데 사용되는 SqlDataRecord 개체입니다.
예외
record
이 null
인 경우
record
에 열이 없거나 이 레코드가 초기화되지 않은 경우
SendResultsRow(SqlDataRecord) 메서드 다음에 SendResultsEnd() 또는 SendResultsStart(SqlDataRecord) 이외의 메서드가 호출된 경우
예제
다음 예제에서는 새 SqlDataRecord 고 SqlMetaData입니다. 예제는 다음 결과 사용 하 여 집합의 시작을 표시 합니다 SendResultsStart 메서드를 사용 하 여 클라이언트에 다시 예제 데이터를 사용 하 여 레코드를 보냅니다 합니다 SendResultsRow 메서드를 사용 하 여 결과의 끝 설정 표시를 SendResultsEnd 메서드.
[Microsoft.SqlServer.Server.SqlProcedure]
public static void StoredProcReturnResultSet()
{
// Create the record and specify the metadata for the columns.
SqlDataRecord record = new SqlDataRecord(
new SqlMetaData("col1", SqlDbType.NVarChar, 100),
new SqlMetaData("col2", SqlDbType.Int));
// Mark the begining of the result-set.
SqlContext.Pipe.SendResultsStart(record);
// Send 10 rows back to the client.
for (int i = 0; i < 10; i++)
{
// Set values for each column in the row.
record.SetString(0, "row " + i.ToString());
record.SetInt32(1, i);
// Send the row back to the client.
SqlContext.Pipe.SendResultsRow(record);
}
// Mark the end of the result-set.
SqlContext.Pipe.SendResultsEnd();
}
<Microsoft.SqlServer.Server.SqlProcedure()> _
Public Shared Sub StoredProcReturnResultSet()
' Create the record and specify the metadata for the columns.
Dim record As New SqlDataRecord( _
New SqlMetaData("col1", SqlDbType.NVarChar, 100), _
New SqlMetaData("col2", SqlDbType.Int))
' Mark the begining of the result-set.
SqlContext.Pipe.SendResultsStart(record)
' Send 10 rows back to the client.
Dim i As Integer
For i = 0 To 9
' Set values for each column in the row.
record.SetString(0, "row " & i.ToString())
record.SetInt32(1, i)
' Send the row back to the client.
SqlContext.Pipe.SendResultsRow(record)
Next
' Mark the end of the result-set.
SqlContext.Pipe.SendResultsEnd()
End Sub
설명
관리 되는 저장된 프로시저 구현 하지 않는 클라이언트에 결과 집합을 보낼 수 있습니다는 SqlDataReader합니다. 이 메서드를 함께 SendResultsRow 고 SendResultsEnd, 저장된 프로시저에서 사용자 지정 결과 집합을 클라이언트로 보낼 수 있도록 합니다.
SendResultsStart 메서드 결과 집합의 시작을 표시 하 고 레코드 매개 변수를 사용 하 여 결과 집합을 설명 하는 메타 데이터를 만듭니다. 사용 하 여 보낸 모든 후속 행을는 SendResultsRow 메서드를 해당 메타 데이터 정의와 일치 해야 합니다.
이후 호출 SendResultsStart만 SendResultsRow 고 SendResultsEnd 호출할 수 있습니다. 같은 인스턴스의 다른 메서드 SqlPipe throw는 InvalidOperationException합니다. SendResultsEnd 설정 SqlPipe 다른 메서드를 호출할 수 있는 초기 상태로 돌아갑니다.
CLR 실행에서 TRANSACT-SQL로 컨트롤이 반환 된 후 CLR 메모리 초기화 되는 정적 또는 지역 변수를 사용 하지 마십시오. 예를 들어, 예를 들어에 프로세스의 인스턴스 클래스를 저장 하지 SQLDataRecord
, CLR에서 컨트롤이 반환 된 후 사용 됩니다. 한 가지 예외는 SQLMetaData
process 클래스에서.