Описание параметров

SQLBindParameter имеет аргументы, описывающие параметр: его тип SQL, точность и масштаб. Драйвер использует эти сведения или метаданные для преобразования значения параметра в тип, необходимый источнику данных. На первый взгляд, может показаться, что драйвер находится в лучшем положении, чтобы узнать метаданные параметра, чем приложение; В конце концов драйвер может легко обнаружить метаданные для столбца результирующих наборов. Как оказалось, это не так. Во-первых, большинство источников данных не предоставляют способ обнаружения метаданных параметра драйвером. Во-вторых, большинство приложений уже знают метаданные.

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

WHERE OrderID = ?  

он может вызывать SQLColumns для столбца OrderID.

Единственная ситуация, в которой приложение не может легко определить метаданные параметра, заключается в том, что пользователь вводит параметризованную инструкцию. В этом случае приложение вызывает SQLPrepare для подготовки инструкции, SQLNumParams для определения количества параметров и SQLDescribeParam для описания каждого параметра. Однако, как было отмечено ранее, большинство источников данных не предоставляют способ обнаружения метаданных параметров драйвером, поэтому SQLDescribeParam не поддерживается широко.