Sdílet prostřednictvím


SqlPipe.SendResultsStart(SqlDataRecord) Metoda

Definice

Označí začátek sady výsledků, která se má odeslat zpět klientovi, a pomocí parametru záznamu vytvoří metadata, která popisují sadu výsledků.

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

Objekt SqlDataRecord , ze kterého se extrahují metadata a použijí se k popisu sady výsledků.

Výjimky

Hodnota record je null.

Nemá record žádné sloupce nebo nebyl inicializován.

Příklady

Následující příklad vytvoří nový SqlDataRecord a jeho SqlMetaData. Příklad pak označí začátek sady výsledků pomocí SendResultsStart metody, odešle záznamy s ukázkovými daty zpět klientovi pomocí SendResultsRow metody a označí konec sady výsledků metodou 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

Poznámky

Spravované uložené procedury můžou odesílat sady výsledků klientům, kteří neimpravují SqlDataReader. Tato metoda spolu s a SendResultsEndumožňují uloženým SendResultsRow procedurám odesílat do klienta vlastní sady výsledků.

Metoda SendResultsStart označuje začátek sady výsledků a pomocí parametru záznamu vytvoří metadata, která popisují sadu výsledků. Všechny následující řádky odesílané metodou SendResultsRow musí odpovídat této definici metadat.

Všimněte si, že po volání SendResultsStartlze volat pouze SendResultsRow a SendResultsEnd . Jakákoli jiná metoda ve stejné instanci vyvolá SqlPipe .InvalidOperationException SendResultsEnd nastaví SqlPipe zpět do počátečního stavu, ve kterém lze volat jiné metody.

Jakmile se ovládací prvek vrátí do jazyka Transact-SQL ze spuštění CLR, nepokoušejte se použít statickou nebo místní proměnnou inicializovanou do paměti CLR. Neukládejte například instanci třídy procesu, například SQLDataRecord, která se použije po vrácení ovládacího prvku z CLR. Jednou z výjimek je SQLMetaData třída in process.

Platí pro

Viz také