Назначение хранилища

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

Чтобы связать хранилище со столбцом данных, приложение вызывает SQLBindCol и передает его:

  • Тип данных, в который будут преобразованы данные.

  • Адрес выходного буфера для данных.

    Приложение должно выделить этот буфер, который должен быть достаточно велик, чтобы вместить данные в форме, в которую они преобразованы.

  • Длина выходного буфера.

    Это значение игнорируется, если возвращаемые данные имеют фиксированную дину в C, например, целое число, вещественное число или структура данных.

  • Адрес буфера хранения, в который возвращается число байт доступных данных.

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

  • Привязка на уровне столбца завершается, когда каждый столбец привязан с собственному массиву переменных.

    Привязка на уровне столбца указывается путем вызова функции SQLSetStmtAttr с параметром Attribute, установленным в значение SQL_ATTR_ROW_BIND_TYPE, и параметром ValuePtr, установленным в значение SQL_BIND_BIND_BY_COLUMN. Все массивы должны содержать одинаковое количество элементов.

  • Привязка на уровне строки завершается, когда все параметры в инструкции SQL привязаны в виде блока к массиву структур, которые содержат отдельные переменные для параметров.

    Привязка на уровне строки задается путем вызова функции SQLSetStmtAttr с параметром Attribute, установленным в значение SQL_ATTR_ROW_BIND_TYPE, и параметром ValuePtr, установленным равным размеру структуры, содержащей переменные, которые получат столбцы результирующего набора.

Приложение также устанавливает значение SQL_ATTR_ROW_ARRAY_SIZE равным количеству элементов в массивах столбцов или строк, и устанавливает SQL_ATTR_ROW_STATUS_PTR и SQL_ATTR_ROWS_FETCHED_PTR.

См. также

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