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


Получение результатов (дополнительно)

Приложение может указать, что смещение добавляется к привязанным адресам буфера данных и соответствующим адресам буфера длины или индикатора при вызове SQLBulkOperations, SQLFetch, SQLFetchScroll или SQLSetPos . Результаты этих дополнений определяют адреса, используемые в этих операциях.

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

Чтобы указать смещение привязки, приложение задает атрибут инструкции SQL_ATTR_ROW_BIND_OFFSET_PTR адресу буфера SQLINTEGER. Прежде чем приложение вызывает функцию, использующую привязки, такие как SQLBulkOperations, SQLFetch, SQLFetchScroll или SQLSetPos, оно помещает смещение в байтах в этот буфер, если ни адрес буфера данных, ни адрес буфера длины/индикатора не равны 0, и в случае, если связанный столбец находится в результирующем наборе. Сумма адреса и смещения должна быть валидным адресом. (Это означает, что либо смещение, либо адрес, к которому добавляется смещение, или оба могут быть недопустимыми, если результат их сложения является допустимым адресом.) Атрибут операторов SQL_ATTR_ROW_BIND_OFFSET_PTR является указателем, чтобы значение смещения можно было применить к нескольким наборам данных привязки, и все они можно изменить, изменив одно значение смещения. Приложение должно убедиться, что указатель остается действительным до закрытия курсора.

Замечание

Смещения привязки не поддерживаются драйверами ODBC 2.

Этот раздел содержит следующие подразделы.