SqlPipe.SendResultsStart(SqlDataRecord) Metoda

Definicja

Oznacza początek zestawu wyników, który ma zostać wysłany z powrotem do klienta, i używa parametru rekordu do konstruowania metadanych opisujących zestaw wyników.

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)

Parametry

record
SqlDataRecord

SqlDataRecord Obiekt, z którego wyodrębniono metadane i został użyty do opisania zestawu wyników.

Wyjątki

Element record to null.

Kolumny record nie zostały zainicjowane lub nie zostały zainicjowane.

Przykłady

Poniższy przykład tworzy nowy SqlDataRecord i jego element SqlMetaData. W tym przykładzie oznacza się początek zestawu wyników przy użyciu SendResultsStart metody , wysyła rekordy z przykładowymi danymi z powrotem do klienta przy użyciu metody i oznacza koniec zestawu SendResultsEnd wyników za pomocą SendResultsRow metody .

[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

Uwagi

Zarządzane procedury składowane mogą wysyłać zestawy wyników do klientów, którzy nie implementują programu SqlDataReader. Ta metoda wraz z elementami SendResultsRow i SendResultsEndumożliwia procedurom składowanymi wysyłanie niestandardowych zestawów wyników do klienta.

Metoda SendResultsStart oznacza początek zestawu wyników i używa parametru rekordu do konstruowania metadanych opisujących zestaw wyników. Wszystkie kolejne wiersze wysyłane przy użyciu metody muszą być zgodne z tą definicją SendResultsRow metadanych.

Należy pamiętać, że po wywołaniu SendResultsStartmetody można wywołać tylko SendResultsRow metodę i SendResultsEnd można jej wywołać. Każda inna metoda w tym samym wystąpieniu SqlPipe zgłasza błąd InvalidOperationException. SendResultsEnd ustawia SqlPipe z powrotem do stanu początkowego, w którym można wywołać inne metody.

Po powrocie kontrolki do języka Transact-SQL z wykonywania środowiska CLR nie należy próbować używać zmiennej statycznej ani lokalnej zainicjowanej do pamięci CLR. Na przykład nie należy przechowywać wystąpienia klasy przetwarzania, na przykład SQLDataRecord, które będzie używane po powrocie kontrolki z clR. Jednym z wyjątków SQLMetaData jest klasa procesu.

Dotyczy

Zobacz też