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).

Примеры

В следующем примере создается новый 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 начало результирующих наборов и использует параметр record для создания метаданных, описывающих результирующий набор. Все последующие строки, отправленные SendResultsRow с помощью метода , должны соответствовать определению метаданных.

Обратите внимание, что после вызова SendResultsStartможно вызывать только SendResultsRow и SendResultsEnd . Любой другой метод в том же экземпляре SqlPipe вызывает исключение InvalidOperationException. SendResultsEnd возвращает SqlPipe исходное состояние, в котором можно вызывать другие методы.

После возврата элемента управления в Transact-SQL из выполнения среды CLR не пытайтесь использовать статическую или локальную переменную, инициализированную в памяти CLR. Например, не храните экземпляр класса в классе процесса, например SQLDataRecord, который будет использоваться после возврата элемента управления из среды CLR. Одним из исключений SQLMetaData является класс in process.

Применяется к

См. также раздел