Descripciones de parámetros

SQLBindParameter tiene argumentos que describen el parámetro: su tipo SQL, precisión y escalado. El controlador usa esta información, o metadatos, para convertir el valor del parámetro al tipo que necesita el origen de datos. A primera vista, podría parecer que el controlador está en mejor posición para conocer los metadatos del parámetro que la aplicación; después de todo, el controlador puede descubrir fácilmente los metadatos de una columna del conjunto de resultados. Pero no es así. En primer lugar, la mayoría de los orígenes de datos no permiten que el controlador descubra los metadatos de los parámetros. En segundo lugar, la mayoría de las aplicaciones ya conocen los metadatos.

Si una instrucción SQL está codificada de forma rígida en la aplicación, el escritor de aplicaciones ya conoce el tipo de cada parámetro. Si la aplicación construye una instrucción SQL en tiempo de ejecución, la aplicación puede determinar los metadatos a medida que compila la instrucción . Por ejemplo, cuando la aplicación crea la cláusula

WHERE OrderID = ?  

puede llamar a SQLColumns para la columna OrderID.

La única situación en la que la aplicación no puede determinar fácilmente los metadatos de los parámetros es cuando el usuario introduce una instrucción parametrizada. En este caso, la aplicación llama a SQLPrepare para preparar la instrucción, a SQLNumParams para determinar el número de parámetros y a SQLDescribeParam para describir cada parámetro. Sin embargo, como se indicó anteriormente, la mayoría de los orígenes de datos no proporcionan una forma para que el controlador descubra los metadatos de los parámetros, por lo que SQLDescribeParam no se admite ampliamente.