SQLGetDescField
Berlaku untuk: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
Driver ODBC Klien Asli SQL Server mengekspos bidang deskriptor khusus driver untuk deskriptor baris implementasi (IRD) saja. Dalam IRD, bidang deskriptor SQL Server dirujuk melalui atribut kolom khusus driver. Untuk informasi tentang daftar lengkap bidang deskriptor khusus driver yang tersedia, lihat SQLColAttribute.
Bidang deskriptor yang berisi string pengidentifikasi kolom sering kali merupakan string panjang nol. Semua nilai bidang deskriptor khusus SQL Server bersifat baca-saja.
Seperti atribut yang diambil dengan SQLColAttribute, bidang deskriptor yang melaporkan atribut tingkat baris (seperti SQL_CA_SS_COMPUTE_ID) dilaporkan untuk semua kolom dalam tataan hasil.
Parameter SQLGetDescField dan Table-Valued
SQLGetDescField dapat digunakan untuk mendapatkan nilai untuk atribut parameter bernilai tabel yang diperluas dan kolom parameter bernilai tabel. Untuk informasi selengkapnya tentang parameter bernilai tabel, lihat Parameter Bernilai Tabel (ODBC).
Dukungan SQLGetDescField untuk Fitur Tanggal dan Waktu yang Ditingkatkan
Untuk informasi tentang bidang deskriptor yang tersedia dengan jenis tanggal/waktu baru, lihat Parameter dan Metadata Hasil.
Untuk informasi selengkapnya, lihat Peningkatan Tanggal dan Waktu (ODBC).
Dimulai di SQL Server 2012 (11.x), SQLGetDescField dapat mengembalikan SQL_C_SS_TIME2 (untuk jenis waktu) atau SQL_C_SS_TIMESTAMPOFFSET (untuk datetimeoffset) alih-alih SQL_C_BINARY, jika aplikasi Anda menggunakan ODBC 3.8.
Dukungan SQLGetDescField untuk UDT CLR Besar
SQLGetDescField mendukung jenis yang ditentukan pengguna (UDT) CLR besar. Untuk informasi selengkapnya, lihat Jenis Yang Ditentukan Pengguna (ODBC) CLR Besar.
Dukungan SQLGetDescField untuk Kolom Jarang
SQLGetDescField dapat digunakan untuk mengkueri bidang IRD baru SQL_CA_SS_IS_COLUMN_SET untuk menentukan apakah kolom adalah kolom column_set .
Untuk informasi selengkapnya, lihat Dukungan Kolom Jarang (ODBC).
Contoh
typedef struct tagCOMPUTEBYLIST
{
SQLSMALLINT nBys;
SQLSMALLINT aByList[1];
} COMPUTEBYLIST;
typedef COMPUTEBYLIST* PCOMPUTEBYLIST;
SQLHDESC hIRD;
SQLINTEGER cbIRD;
SQLINTEGER nSet = 0;
// . . .
// Execute a statement that contains a COMPUTE clause,
// then get the descriptor handle of the IRD and
// get some IRD values.
SQLGetStmtAttr(g_hStmt, SQL_ATTR_IMP_ROW_DESC,
(SQLPOINTER) &hIRD, sizeof(SQLHDESC), &cbIRD);
// For statement-wide column attributes, any
// descriptor record will do. You know that 1 exists,
// so use it.
SQLGetDescField(hIRD, 1, SQL_CA_SS_NUM_COMPUTES,
(SQLPOINTER) &nComputes, SQL_IS_INTEGER, &cbIRD);
if (nSet == 0)
{
SQLINTEGER nOrderID;
printf_s("Normal result set.\n");
for (nCol = 0; nCol < nCols; nCol++)
{
SQLGetDescField(hIRD, nCol+1,
SQL_CA_SS_COLUMN_ORDER,
(SQLPOINTER) &nOrderID, SQL_IS_INTEGER,
&cbIRD);
if (nOrderID != 0)
{
printf_s("Col in ORDER BY, pos: %ld",
nOrderID);
}
printf_s("\n");
}
printf_s("\n");
}
else
{
PCOMPUTEBYLIST pByList;
SQLSMALLINT nBy;
SQLINTEGER nColID;
printf_s("Computed result set number: %lu\n",
nSet);
SQLGetDescField(hIRD, 1, SQL_CA_SS_COMPUTE_BYLIST,
(SQLPOINTER) &pByList, SQL_IS_INTEGER,
&cbIRD);
if (pByList != NULL)
{
printf_s("Clause ordered by columns: ");
for (nBy = 0; nBy < pByList->nBys; )
{
printf_s("%u", pByList->aByList[nBy]);
nBy++;
if (nBy == pByList->nBys)
{
printf_s("\n");
}
else
{
printf_s(", ");
}
}
}
else
{
printf_s("Compute clause set not ordered.\n");
}
for (nCol = 0; nCol < nCols; nCol++)
{
SQLGetDescField(hIRD, nCol+1,
SQL_CA_SS_COLUMN_ID, (SQLPOINTER) &nColID,
SQL_IS_INTEGER, &cbIRD);
printf_s("ColumnID: %lu, nColID);
}
printf_s("\n");
}
if (SQLMoreResults(g_hStmt) == SQL_SUCCESS)
{
// Determine the result set indicator.
SQLGetDescField(hIRD, 1, SQL_CA_SS_COMPUTE_ID,
(SQLPOINTER) &nSet, SQL_IS_INTEGER, &cbIRD);
}
Lihat Juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk