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


Автоматическое заполнение IPD

Некоторые драйверы могут задавать поля IPD после подготовки параметризованного запроса. Поля дескриптора автоматически заполняются сведениями о параметре, включая тип данных, точность, масштабирование и другие характеристики. Это эквивалентно поддержке SQLDescribeParam. Эти сведения могут быть особенно ценными для приложения, если он не имеет другого способа его обнаружения, например, когда нерегламентированный запрос выполняется с параметрами, о которые приложение не знает.

Приложение определяет, поддерживает ли драйвер автоматическое заполнение путем вызова SQLGetConnectAttr с атрибутом SQL_ATTR_AUTO_IPD. Если возвращается SQL_TRUE, драйвер поддерживает его и приложение может включить его, задав атрибут оператора SQL_ATTR_ENABLE_AUTO_IPD значение SQL_TRUE.

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

Автоматическое заполнение IPD может привести к штрафу производительности. Приложение может отключить его, сбросив атрибут инструкции SQL_ATTR_ENABLE_AUTO_IPD на SQL_FALSE (значение по умолчанию).