Compartir a través de


SqlPipe.SendResultsStart(SqlDataRecord) Método

Definición

Marca el inicio de un conjunto de resultados que se va a devolver al cliente y utiliza el parámetro de registro para generar los metadatos que describen el conjunto de resultados.

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)

Parámetros

record
SqlDataRecord

Objeto SqlDataRecord del que se extraen los metadatos que se utilizan para describir el conjunto de resultados.

Excepciones

El valor de record es null.

record no tiene columnas o no se ha inicializado.

Ejemplos

En el ejemplo siguiente se crea un nuevo SqlDataRecord objeto y su SqlMetaData. A continuación, el ejemplo marca el principio de un conjunto de resultados mediante el SendResultsStart método , envía registros con datos de ejemplo al cliente mediante el SendResultsRow método y marca el final del conjunto de resultados con el SendResultsEnd método .

[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

Comentarios

Los procedimientos almacenados administrados pueden enviar conjuntos de resultados a los clientes que no implementan un SqlDataReader. Este método, junto con SendResultsRow y SendResultsEnd, permiten que los procedimientos almacenados envíen conjuntos de resultados personalizados al cliente.

El SendResultsStart método marca el principio de un conjunto de resultados y usa el parámetro record para construir los metadatos que describen el conjunto de resultados. Todas las filas posteriores, enviadas mediante el SendResultsRow método , deben coincidir con esa definición de metadatos.

Tenga en cuenta que después de llamar a SendResultsStart, solo SendResultsRow se puede llamar a y SendResultsEnd . Cualquier otro método de la misma instancia de SqlPipe produce una InvalidOperationExceptionexcepción . SendResultsEnd vuelve SqlPipe al estado inicial donde se puede llamar a otros métodos.

Después de que el control vuelva a Transact-SQL desde la ejecución de CLR, no intente usar una variable estática o local inicializada en la memoria CLR. Por ejemplo, no almacene una instancia de en una clase de proceso, por ejemplo SQLDataRecord, que se usará después de que el control devuelva de CLR. Una excepción es la SQLMetaData clase en proceso.

Se aplica a

Consulte también