SqlPipe.SendResultsStart(SqlDataRecord) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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.
Metoda inna niż SendResultsRow(SqlDataRecord) lub SendResultsEnd() została wywołana po metodzie SendResultsStart(SqlDataRecord) .
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.