SqlPipe.SendResultsStart(SqlDataRecord) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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.
Za metodou byla volána SendResultsStart(SqlDataRecord) jiná metoda než SendResultsRow(SqlDataRecord) neboSendResultsEnd().
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.