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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

См. также

Результаты обработки (ODBC)