Bagikan melalui


SqlPipe.SendResultsStart(SqlDataRecord) Metode

Definisi

Menandai awal tataan hasil yang akan dikirim kembali ke klien, dan menggunakan parameter rekaman untuk membuat metadata yang menjelaskan kumpulan hasil.

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)

Parameter

record
SqlDataRecord

Objek SqlDataRecord tempat metadata diekstrak dan digunakan untuk menjelaskan kumpulan hasil.

Pengecualian

record adalah null.

record tidak memiliki kolom atau belum diinisialisasi.

Contoh

Contoh berikut membuat baru SqlDataRecord dan SqlMetaData. Contoh kemudian menandai awal tataan hasil menggunakan SendResultsStart metode , mengirim rekaman dengan contoh data kembali ke klien menggunakan SendResultsRow metode , dan menandai akhir tataan hasil dengan SendResultsEnd metode .

[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

Keterangan

Prosedur tersimpan terkelola dapat mengirim tataan hasil ke klien yang tidak menerapkan SqlDataReader. Metode ini, bersama dengan SendResultsRow dan SendResultsEnd, memungkinkan prosedur tersimpan untuk mengirim tataan hasil kustom ke klien.

Metode menandai SendResultsStart awal kumpulan hasil, dan menggunakan parameter rekaman untuk membuat metadata yang menjelaskan kumpulan hasil. Semua baris berikutnya, yang dikirim menggunakan SendResultsRow metode , harus cocok dengan definisi metadata tersebut.

Perhatikan bahwa setelah memanggil SendResultsStart, hanya SendResultsRow dan SendResultsEnd dapat dipanggil. Metode lain dalam instans SqlPipeInvalidOperationExceptionyang sama melempar . SendResultsEndSqlPipe diatur kembali ke status awal di mana metode lain dapat dipanggil.

Setelah kontrol kembali ke Transact-SQL dari eksekusi CLR, jangan mencoba menggunakan variabel statis atau lokal yang diinisialisasi ke memori CLR. Misalnya, jangan menyimpan instans kelas dalam proses, misalnya SQLDataRecord, yang akan digunakan setelah kontrol kembali dari CLR. Salah satu pengecualian adalah di SQLMetaData kelas proses.

Berlaku untuk

Lihat juga