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

Приложение может назначить хранилище для результатов перед выполнением инструкции 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.

См. также

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

Обработка результатов (ODBC)