Поделиться через


SQLDescribeCol

Применимо к:SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure Azure Synapse Analytics AnalyticsPlatform System (PDW)

Для выполняемых инструкций драйвер ODBC собственного клиента SQL Server не должен запрашивать сервер для описания столбцов в результирующем наборе. В этом случае SQLDescribeCol не вызывает обход сервера. Как и SQLColAttribute и SQLNumResultCols, вызов SQLDescribeCol в подготовленных, но не выполненных инструкциях создает циклический запрос сервера.

Если инструкция Transact-SQL или пакет инструкций возвращает несколько результирующих наборов строк, столбец, на который ссылается порядковый номер, можно получить в отдельной таблице или ссылаться на совершенно другой столбец в результирующем наборе. SqlDescribeCol должен вызываться для каждого набора. При изменении результирующего набора приложение должно осуществить повторную привязку значений данных перед выборкой результатов строк. Дополнительные сведения об обработке запросов, возвращающих несколько результирующих наборов, см. в разделе SQLMoreResults.

Когда несколько результирующих наборов формируется подготовленным пакетом инструкций SQL, атрибуты столбцов сообщаются только для первого результирующего набора.

Для типов данных больших значений значение, возвращаемое в DataTypePtr , SQL_VARCHAR, SQL_VARBINARY или SQL_NVARCHAR. Значение SQL_SS_LENGTH_UNLIMITED в ColumnSizePtr указывает, что размер неограничен.

Улучшения ядра СУБД, начиная с SQL Server 2012 (11.x), позволяют SQLDescribeCol получать более точные описания ожидаемых результатов. Эти более точные результаты могут отличаться от значений, возвращаемых SQLDescribeCol в предыдущих версиях SQL Server. Дополнительные сведения см. в разделе Обнаружение метаданных.

Поддержка функцией SQLDescribeCol улучшенных возможностей работы с данными в формате даты-времени

Для типов даты-времени возвращаются следующие значения.

Атрибут DataTypePtr ColumnSizePtr DecimalDigitsPtr
datetime SQL_TYPE_TIMESTAMP 23 3
smalldatetime SQL_TYPE_TIMESTAMP 16 0
Дата SQL_TYPE_DATE 10 0
Время SQL_SS_TIME2 8, 10..16 0..7
datetime2 SQL_TYPE_TIMESTAMP 19, 21..27 0..7
datetimeoffset SQL_SS_TIMESTAMPOFFSET 26, 28..34 0..7

Дополнительные сведения см. в разделе "Улучшения даты и времени" (ODBC).

Поддержка функцией SQLDescribeCol определяемых пользователем типов больших данных CLR

SQLDescribeCol поддерживает большие определяемые пользователем типы CLR (определяемые пользователем UDT). Дополнительные сведения см. в разделе "Крупные определяемые пользователем типы CLR" (ODBC).

См. также

Функция SQLDescribeCol
Подробные сведения о реализации API-интерфейсов ODBC