SqlPipe.SendResultsStart(SqlDataRecord) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Contrassegna l'inizio di un set di risultati da inviare al client e utilizza il parametro record per costruire i metadati che descrivono il set di risultati.
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)
Parametri
- record
- SqlDataRecord
Oggetto SqlDataRecord da cui i metadati vengono estratti e utilizzati per descrivere il gruppo di risultati.
Eccezioni
L'elemento record
è null
.
Il record
non contiene colonne oppure non è stato inizializzato.
È stato specificato un metodo diverso da SendResultsRow(SqlDataRecord) oppure è stato chiamato il metodo SendResultsEnd() dopo il metodo SendResultsStart(SqlDataRecord).
Esempio
Nell'esempio seguente viene creato un nuovo SqlDataRecord oggetto e il relativo SqlMetaDataoggetto . L'esempio contrassegna quindi l'inizio di un set di risultati usando il SendResultsStart metodo , invia i record con i dati di esempio al client usando il SendResultsRow metodo e contrassegna la fine del set di risultati con il SendResultsEnd metodo .
[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
Commenti
Le stored procedure gestite possono inviare set di risultati ai client che non implementano un oggetto SqlDataReader. Questo metodo, insieme a SendResultsRow e SendResultsEnd, consente alle stored procedure di inviare set di risultati personalizzati al client.
Il SendResultsStart metodo contrassegna l'inizio di un set di risultati e usa il parametro record per costruire i metadati che descrivono il set di risultati. Tutte le righe successive, inviate usando il SendResultsRow metodo , devono corrispondere alla definizione dei metadati.
Si noti che dopo aver chiamato , è possibile chiamare SendResultsStartsolo SendResultsRow e SendResultsEnd . Qualsiasi altro metodo nella stessa istanza di SqlPipe genera un'eccezione InvalidOperationException. SendResultsEnd restituisce SqlPipe lo stato iniziale in cui è possibile chiamare altri metodi.
Dopo che il controllo torna a Transact-SQL dall'esecuzione CLR, non tentare di usare una variabile statica o locale inizializzata nella memoria CLR. Ad esempio, non archiviare un'istanza di in una classe di processo, ad esempio SQLDataRecord
, che verrà usata dopo la restituzione del controllo da CLR. Un'eccezione è la SQLMetaData
classe nella classe process.