SqlPipe.SendResultsStart(SqlDataRecord) Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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.
Metode selain SendResultsRow(SqlDataRecord) atau SendResultsEnd() dipanggil setelah SendResultsStart(SqlDataRecord) metode .
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.