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

SQLBindParameter содержит аргументы, описывающие параметр: его тип SQL, точность и масштаб.SQLBindParameter has arguments that describe the parameter: its SQL type, precision, and scale. Драйвер использует эти сведения или метаданные для преобразования значения параметра в тип, необходимый для источника данных.The driver uses this information, or metadata, to convert the parameter value to the type needed by the data source. На первый взгляд может показаться, что драйвер находится в лучшем положении, чтобы узнать метаданные параметров, чем приложение; в конце концов, драйвер может легко обнаружить метаданные для столбца результирующего набора.At first glance, it might seem that the driver is in a better position to know the parameter metadata than the application; after all, the driver can easily discover the metadata for a result set column. Как оказалось, это не так.As it turns out, this is not the case. Во-первых, большинство источников данных не предоставляют драйверу способ обнаружения метаданных параметров.First, most data sources do not provide a way for the driver to discover parameter metadata. Во вторых, большинство приложений уже знакомы с метаданными.Second, most applications already know the metadata.

Если в приложении жестко задана инструкция SQL, то модуль записи приложения уже знает тип каждого параметра.If an SQL statement is hard-coded in the application, the application writer already knows the type of each parameter. Если инструкция SQL создается приложением во время выполнения, то приложение может определить метаданные при построении инструкции.If an SQL statement is constructed by the application at run time, the application can determine the metadata as it builds the statement. Например, когда приложение конструирует предложениеFor example, when the application constructs the clause

WHERE OrderID = ?  

Он может вызвать SQLColumns для столбца OrderID.it can call SQLColumns for the OrderID column.

Единственной ситуацией, в которой приложение не может легко определить метаданные параметра, является то, что пользователь вводит параметризованную инструкцию.The only situation in which the application cannot easily determine the parameter metadata is when the user enters a parameterized statement. В этом случае приложение вызывает SQLPrepare для подготовки инструкции, SQLNumParams для определения количества параметров и SQLDescribeParam для описания каждого параметра.In this case, the application calls SQLPrepare to prepare the statement, SQLNumParams to determine the number of parameters, and SQLDescribeParam to describe each parameter. Однако, как было отмечено ранее, большинство источников данных не предоставляют драйверу способ обнаружения метаданных параметров, поэтому SQLDescribeParam не поддерживается широко.However, as was noted earlier, most data sources do not provide a way for the driver to discover parameter metadata, so SQLDescribeParam is not widely supported.