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


Определение характеристик результирующего набора (ODBC)

Метаданные – это данные, описывающие другие данные. Например, метаданные результирующего набора описывают такие характеристики результирующего набора, как количество столбцов,типы данных в этих столбцах, их имена, точность и возможность содержать значения NULL.

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

Метаданные требуются приложениям для большинства операций с результирующими наборами. Например, приложение использует тип данных столбца, чтобы определить, какую переменную привязывать к этому столбцу. Оно использует длину в байтах столбцов с символьными значениями, чтоб определить, сколько места потребуется для отображения данных из этого столбца. Способ определения метаданных для столбца зависит от типа приложения.

Вертикальные приложения обычно работают со стандартными таблицами и выполняют стандартные операции с этими таблицами. Поскольку метаданные результирующих наборов для таких приложений определяются даже до того, как приложение написано, и управляются разработчиком, они могут быть жестко запрограммированы в приложении. Например, если столбец идентификатора заказа определен в источник данных как 4-байтовое целое число, приложение может всегда привязывать 4-байтовые целые числа к этому столбцу. Если метаданные жестко запрограммированы в приложении, изменения в используемых приложением таблицах обычно подразумевают изменения в коде приложения.

В обычных приложениях, особенно приложениях, поддерживающих нерегламентируемые запросы, метаданные результирующих наборов обычно неизвестны до выполнения.

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

  • SQLNumResultCols для определения количества возвращенных запросом столбцов.

  • SQLColAttribute или SQLDescribeCol для описания столбца в результирующем наборе.

Хорошо спроектированные приложения пишутся с предположением, что результирующий набор неизвестен, и используют для привязки столбцов в результирующем наборе данные, возвращаемые этими функциями. Приложение может вызвать эти функции в любое время после подготовки или выполнения инструкции. Однако для оптимизации производительности приложение должно вызывать функции SQLColAttribute, SQLDescribeCol и SQLNumResultCols после выполнения инструкции.

Можно выполнять несколько одновременных вызовов метаданных. Эти процедуры системного каталога, лежащие в основе реализаций API-интерфейса каталога ODBC, могут вызываться драйвером ODBC во время использования им статических серверных курсоров. Это позволяет приложениям одновременно обрабатывать несколько вызовов функций каталога ODBC.

Если приложение использует определенный набор метаданных более одного раза, может быть полезно кэшировать данные в собственных переменных после их первого получения. Этот предотвращает последующие вызовы функций каталога ODBC для получения тех же данных, ради которых драйверу приходится многократно обращаться к серверу.

См. также

Основные понятия