SQLGetDescField
The SQL Server Native istemci ODBC driver exposes driver-specific descriptor fields for the implementation row descriptor (IRD) only. Içinde IRD, SQL Server Tanımlayıcı alanları, sürücüye özgü sütun öznitelikleri ile başvurulur. Kullanılabilir özel sürücü tanımlayıcı alanları tam bir listesi hakkında bilgi için bkz: SQLColAttribute.
Sütun tanıtıcısı dizeleri içeren tanımlayıcısı genellikle sıfır uzunluklu dizeler alanlardır.Tümü SQL Server-Özel tanımlayıcı alan değerlerini okumak - yalnızca.
Öznitelikleri gibi ile alınan SQLColAttribute, satır düzey özniteliklerini (örneğin, SQL_CA_SS_COMPUTE_ID) rapor tanımlayıcısı alanları, sonuç kümesindeki tüm sütunlar için raporlanır.
SQLGetDescField ve tablo biçiminde parametreleri
SQLGetDescField tablo değerli parametreleri ve tablo değerli parametre sütunları genişletilmiş özniteliklerinin değerleri almak için kullanılır.Tablo değerli parametreleri hakkında daha fazla bilgi için bkz: Tablo biçiminde Parametreler (ODBC).
Gelişmiş tarih ve saat özellikleri 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 veriler.
Daha fazla bilgi için bkz:Geliştirmeler'nı (ODBC) tarih/saat.
Büyük bir 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).
SQLGetDescField desteği ve seyrek sütunlar
SQLGetDescField Yeni bir sütun olup olmadığını belirlemek için SQL_CA_SS_IS_COLUMN_SET IRD alan sorgulamak için kullanılabilir 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);
}