SQLGetDescField
The SQL Server Native Client ODBC driver exposes driver-specific descriptor fields for the implementation row descriptor (IRD) only.IRD içinde SQL Server açıklayıcı alanlar başvuru yoluyla sürücüye özgü sütun öznitelikleri.Kullanılabilir sürücüye özgü tanımlayıcısı alanları eksiksiz listesi hakkında bilgi için bkz: SQLColAttribute.
İçeren sütun tanımlayıcı dize tanımlayıcısı genellikle sıfır uzunluklu dizeler alanlardır.Tüm SQL Server-salt okunur alan değerlerini belirli tanımlayıcısı.
Öznitelikleri ile alınan gibi SQLColAttribute, açıklayıcı alanlar, rapor satır düzey niteliklerini (sözgelimi, SQL_CA_SS_COMPUTE_ID) bildirilen tüm sütunların sonuç küme.
SQLGetDescField ve tablo değerli parametreleri
SQLGetDescField Tablo değerli parametreleri ve tablo değerli parametresi sütunları için genişletilmiş öznitelikleri değerleri almak için kullanılır.Tablo değerli parametreleri hakkında daha fazla bilgi için bkz: Tablo değerli parametreleri (odbc).
Gelişmiş tarih ve saat özellikleri için SQLGetDescField desteği
Yeni tarih veya saat türleriyle tanımlayıcısı alanları hakkında ek bilgi için bkz: Parametre ve sonucu meta veri.
Daha fazla bilgi için bkz: Tarih/saat (odbc) geliştirmeleri.
Büyük clr UDTs SQLGetDescField desteği
SQLGetDescField büyük clr kullanıcı tanımlı türler (UDTs) destekler.Daha fazla bilgi için bkz: Büyük clr kullanıcı tanımlı türler (odbc).
Seyrek sütunlar için SQLGetDescField desteği
SQLGetDescFieldYeni bir sütun olup olmadığını belirlemek için SQL_CA_SS_IS_COLUMN_SET IRD alan sorgulamak için kullanılan bir column_set sütun.
Daha fazla bilgi için bkz: Seyrek sütunlar destek (odbc).
Örnek
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);
}