SQLGetDescField
Применимо к:SQL Server
Azure SQL Database
Azure Managed Instance
Azure Synapse Analytics Analytics
Platform System (PDW)
Драйвер ODBC для собственного клиента SQL Server предоставляет только поля дескриптора строки реализации (IRD). В среде IRD поля дескриптора SQL Server ссылаются с помощью атрибутов столбца для конкретного драйвера. Полный список доступных полей дескриптора для конкретного драйвера см. в статье SQLColAttribute.
Поля дескриптора, содержащие строки идентификатора столбца, часто являются строками нулевой длины. Все значения полей дескриптора sql Server доступны только для чтения.
Как и атрибуты, полученные с помощью SQLColAttribute, поля дескриптора, сообщающие атрибуты уровня строк (например, SQL_CA_SS_COMPUTE_ID), сообщаются для всех столбцов в результирующем наборе.
Функция SQLGetDescField и возвращающие табличные значения параметры
SQLGetDescField можно использовать для получения значений для расширенных атрибутов табличных параметров и столбцов возвращаемых табличным значением параметров. Дополнительные сведения о табличном значении параметров см. в разделе "Параметры с табличным значением" (ODBC).
Поддержка функции SQLGetDescField для усовершенствованных функций даты-времени
Сведения о полях дескриптора, доступных с новыми типами даты и времени, см. в разделе "Параметры" и "Метаданные результата".
Дополнительные сведения см. в разделе "Улучшения даты и времени" (ODBC).
Начиная с SQL Server 2012 (11.x), SQLGetDescField может возвращать SQL_C_SS_TIME2 (для типов времени ) или SQL_C_SS_TIMESTAMPOFFSET (для datetimeoffset) вместо SQL_C_BINARY, если приложение использует ODBC 3.8.
Поддержка функции SQLGetDescField для больших определяемых пользователем типов данных CLR
SQLGetDescField поддерживает большие определяемые пользователем типы CLR (определяемые пользователем UDT). Дополнительные сведения см. в разделе "Крупные определяемые пользователем типы CLR" (ODBC).
Поддержка функции SQLGetDescField Support для разреженных столбцов
SQLGetDescField можно использовать для запроса нового поля IRD SQL_CA_SS_IS_COLUMN_SET, чтобы определить, является ли столбец столбцом column_set .
Дополнительные сведения см. в разделе "Поддержка разреженных столбцов( ODBC)".
пример
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);
}
См. также
Функция SQLGetDescField
Подробные сведения о реализации API-интерфейсов ODBC
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по