다음을 통해 공유


SqlPipe.SendResultsStart(SqlDataRecord) 메서드

정의

클라이언트로 다시 보낼 결과 집합의 시작 부분을 표시하고 레코드 매개 변수를 사용하여 결과 집합을 설명하는 메타데이터를 만듭니다.

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 개체입니다.

예외

recordnull인 경우

record에 열이 없거나 이 레코드가 초기화되지 않은 경우

SendResultsRow(SqlDataRecord) 메서드 다음에 SendResultsEnd() 또는 SendResultsStart(SqlDataRecord) 이외의 메서드가 호출된 경우

예제

다음 예제에서는 새 SqlDataRecordSqlMetaData입니다. 예제는 다음 결과 사용 하 여 집합의 시작을 표시 합니다 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합니다. 이 메서드를 함께 SendResultsRowSendResultsEnd, 저장된 프로시저에서 사용자 지정 결과 집합을 클라이언트로 보낼 수 있도록 합니다.

SendResultsStart 메서드 결과 집합의 시작을 표시 하 고 레코드 매개 변수를 사용 하 여 결과 집합을 설명 하는 메타 데이터를 만듭니다. 사용 하 여 보낸 모든 후속 행을는 SendResultsRow 메서드를 해당 메타 데이터 정의와 일치 해야 합니다.

이후 호출 SendResultsStartSendResultsRowSendResultsEnd 호출할 수 있습니다. 같은 인스턴스의 다른 메서드 SqlPipe throw는 InvalidOperationException합니다. SendResultsEnd 설정 SqlPipe 다른 메서드를 호출할 수 있는 초기 상태로 돌아갑니다.

CLR 실행에서 TRANSACT-SQL로 컨트롤이 반환 된 후 CLR 메모리 초기화 되는 정적 또는 지역 변수를 사용 하지 마십시오. 예를 들어, 예를 들어에 프로세스의 인스턴스 클래스를 저장 하지 SQLDataRecord, CLR에서 컨트롤이 반환 된 후 사용 됩니다. 한 가지 예외는 SQLMetaData process 클래스에서.

적용 대상

추가 정보