Bagikan melalui


Pembuatan Set Baris Parameter Bernilai Tabel di Klien Asli SQL Server

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)

Meskipun konsumen dapat menyediakan objek set baris apa pun untuk parameter bernilai tabel, objek set baris umum diimplementasikan terhadap penyimpanan data back-end, dan karenanya memberikan performa terbatas. Untuk alasan ini, Penyedia SQL Server Native Client OLE DB memungkinkan konsumen untuk membuat objek set baris khusus di atas data dalam memori. Objek set baris dalam memori khusus ini adalah objek COM baru yang disebut set baris parameter bernilai tabel . Ini menyediakan fungsionalitas yang mirip dengan set parameter.

Objek set baris parameter bernilai tabel dibuat secara eksplisit oleh konsumen untuk parameter input melalui beberapa antarmuka tingkat sesi. Ada satu instans objek himpunan baris parameter bernilai tabel per parameter bernilai tabel. Konsumen dapat membuat objek himpunan baris parameter bernilai tabel baik dengan memberikan informasi metadata yang sudah diketahui (skenario statis), atau dengan menemukannya melalui antarmuka penyedia (skenario dinamis). Bagian berikut menjelaskan dua skenario ini.

Skenario Statis

Ketika informasi jenis diketahui, konsumen menggunakan ITableDefinitionWithConstraints::CreateTableWithConstraints untuk membuat instans objek set baris parameter bernilai tabel yang sesuai dengan parameter bernilai tabel.

Bidang guid (parameter pTableID ) berisi GUID khusus (CLSID_ROWSET_TVP). Anggota pwszName berisi nama jenis parameter bernilai tabel yang ingin diinstansiasi konsumen. Bidang eKind akan diatur ke DBKIND_GUID_NAME. Nama ini diperlukan ketika pernyataan adalah ad hoc SQL; nama bersifat opsional jika merupakan panggilan prosedur.

Untuk agregasi, konsumen melewati parameter pUnkOuter dengan IUnknown yang mengontrol.

Properti objek kumpulan baris parameter bernilai tabel hanya dibaca, sehingga konsumen tidak diharapkan untuk mengatur properti apa pun di rgPropertySets.

Untuk anggota rgPropertySets dari setiap struktur DBCOLUMNDESC, konsumen dapat menentukan properti tambahan untuk setiap kolom. Properti ini milik kumpulan properti DBPROPSET_SQLSERVERCOLUMN. Mereka memungkinkan Anda menentukan pengaturan komputasi dan default untuk setiap kolom. Mereka juga mendukung properti kolom yang ada, seperti nullability dan identitas.

Untuk mengambil informasi yang sesuai dari objek set baris parameter bernilai tabel, konsumen menggunakan IRowsetInfo::GetProperties.

Untuk mengambil informasi tentang status null, unik, komputasi, dan pembaruan setiap kolom, konsumen menggunakan IColumnsRowset::GetColumnsRowset atau IColumnsInfo::GetColumnInfo. Metode ini memberikan informasi terperinci tentang setiap kolom set baris parameter bernilai tabel.

Konsumen menentukan jenis setiap kolom parameter bernilai tabel. Ini mirip dengan bagaimana kolom ditentukan saat tabel dibuat di SQL Server. Konsumen mendapatkan objek set baris parameter bernilai tabel dari Penyedia OLE DB Klien Asli SQL Server melalui parameter output ppRowset .

Skenario Dinamis

Ketika konsumen tidak memiliki informasi jenis, konsumen harus menggunakan IOpenRowset::OpenRowset untuk membuat instans objek set baris parameter bernilai tabel. Semua konsumen harus memberikan kepada penyedia adalah nama jenis.

Dalam skenario ini, penyedia mendapatkan informasi jenis tentang objek set baris parameter bernilai tabel dari server atas nama konsumen.

Parameter pTableID dan pUnkOuter harus diatur seperti dalam skenario statis. Penyedia SQL Server Native Client OLE DB kemudian mendapatkan informasi jenis (informasi kolom dan batasan) dari server, dan mengembalikan objek set baris parameter bernilai tabel melalui parameter ppRowset . Operasi ini memerlukan komunikasi dengan server, dan oleh karena itu tidak melakukan serta skenario statis. Skenario dinamis hanya berfungsi dengan panggilan prosedur berparameter.

Lihat Juga

Parameter Bernilai Tabel (OLE DB)
Menggunakan Parameter Bernilai Tabel (OLE DB)