Дескрипторные идентификаторы

Дескриптор представляет собой коллекцию метаданных, описывающих параметры инструкции SQL или столбцов результирующего набора, как показано в приложении или драйвере (также известном как реализация). Таким образом, дескриптор может заполнить любую из четырех ролей:

  • Дескриптор параметра приложения (APD). Содержит сведения о буферах приложений, привязанных к параметрам в инструкции SQL, таких как их адреса, длины и типы данных C.

  • Дескриптор параметра реализации (IPD). Содержит сведения о параметрах в инструкции SQL, таких как их типы данных SQL, длина и допустимость null.

  • Дескриптор строки приложения (ARD). Содержит сведения о буферах приложения, привязанных к столбцам в результирующем наборе, таких как их адреса, длины и типы данных C.

  • Дескриптор строки реализации (IRD). Содержит сведения о столбцах в наборе результатов, таких как типы данных SQL, длину и возможность принимать значение NULL.

Четыре дескриптора (по одному заполнению каждой роли) выделяются автоматически при выделении инструкции. Они называются автоматически выделенными дескрипторами и всегда связаны с этой инструкцией. Приложения также могут выделять дескрипторы с помощью SQLAllocHandle. Они называются явно выделенными дескрипторами. Они выделяются для соединения и могут быть связаны с одной или несколькими инструкциями в этом соединении, чтобы выполнять роль APD или ARD для этих инструкций.

Большинство операций в ODBC можно выполнять без явного использования дескрипторов приложением. Однако дескрипторы предоставляют удобный способ для выполнения некоторых операций. Например, предположим, что приложение хочет вставить данные из двух разных наборов буферов. Чтобы использовать первый набор буферов, он неоднократно вызывает SQLBindParameter , чтобы привязать их к параметрам в INSERT инструкции, а затем выполнить инструкцию. Чтобы использовать второй набор буферов, он повторит этот процесс. Кроме того, он может настроить привязки к первому набору буферов в одном дескрипторе и второму набору буферов в другом дескрипторе. Чтобы переключиться между наборами привязок, приложение просто вызовет SQLSetStmtAttr и связывает правильный дескриптор с инструкцией в качестве APD.

Дополнительные сведения о дескрипторах см. в разделе "Типы дескрипторов".