Определение характеристик результирующего набора (ODBC)
Применимо: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure azure Synapse Analytics Analytics Platform System (PDW)
Метаданные — это данные, описывающие другие данные. Например, метаданные результирующего набора описывают такие характеристики результирующего набора, как количество столбцов, типы данных в этих столбцах, их имена, точность и допустимость значений NULL.
ODBC сообщает метаданные приложениям с помощью функций каталога API-интерфейса. Драйвер ODBC собственного клиента SQL Server реализует многие функции каталога API ODBC в качестве вызовов соответствующей процедуры каталога SQL Server.
Метаданные требуются приложениям для большинства операций с результирующими наборами. Например, приложение использует тип данных столбца, чтобы определить, какую переменную привязывать к этому столбцу. Оно использует длину в байтах столбцов с символьными значениями, чтоб определить, сколько места потребуется для отображения данных из этого столбца. Способ определения метаданных для столбца зависит от типа приложения.
Вертикальные приложения обычно работают со стандартными таблицами и выполняют стандартные операции с этими таблицами. Поскольку метаданные результирующих наборов для таких приложений определяются даже до того, как приложение написано, и управляются разработчиком, они могут быть жестко запрограммированы в приложении. Например, если столбец идентификатора заказа определен в источник данных как 4-байтовое целое число, приложение может всегда привязывать 4-байтовые целые числа к этому столбцу. Если метаданные жестко запрограммированы в приложении, изменения в используемых приложением таблицах обычно подразумевают изменения в коде приложения.
В обычных приложениях, особенно приложениях, поддерживающих нерегламентируемые запросы, метаданные результирующих наборов обычно неизвестны до времени выполнения.
Чтобы определить характеристики результирующего набора, приложение может вызвать следующие функции.
SQLNumResultCols , чтобы определить количество возвращаемых столбцов запроса.
SQLColAttribute или SQLDescribeCol , чтобы описать столбец в результирующем наборе.
Хорошо спроектированные приложения пишутся с предположением, что результирующий набор неизвестен, и используют для привязки столбцов в результирующем наборе данные, возвращаемые этими функциями. Приложение может вызвать эти функции в любое время после подготовки или выполнения инструкции. Однако для оптимальной производительности приложение должно вызывать SQLColAttribute, SQLDescribeCol и SQLNumResultCols после выполнения инструкции.
Можно выполнять несколько одновременных вызовов метаданных. Эти процедуры системного каталога, лежащие в основе реализаций API-интерфейса каталога ODBC, могут вызываться драйвером ODBC во время использования им статических серверных курсоров. Это позволяет приложениям одновременно обрабатывать несколько вызовов функций каталога ODBC.
Если приложение использует определенный набор метаданных более одного раза, может быть полезно кэшировать данные в закрытых переменных после их первого получения. Этот предотвращает последующие вызовы функций каталога ODBC для получения тех же данных, ради которых драйверу приходится многократно обращаться к серверу.