Descrever parâmetros

SQLBindParameter tem argumentos que descrevem o parâmetro: seu tipo SQL, precisão e escala. O driver usa essas informações, ou metadados, para converter o valor do parâmetro para o tipo necessário para a fonte de dados. À primeira vista, pode parecer que o driver está em uma posição melhor para conhecer os metadados do parâmetro do que o aplicativo; Afinal, o driver pode facilmente descobrir os metadados de uma coluna de conjunto de resultados. Como se vê, não é o caso. Primeiro, a maioria das fontes de dados não fornece uma maneira para o driver descobrir metadados de parâmetro. Em segundo lugar, a maioria dos aplicativos já conhece os metadados.

Se uma instrução SQL estiver codificada no aplicativo, o gravador do aplicativo já saberá o tipo de cada parâmetro. Se uma instrução SQL for construída pelo aplicativo em tempo de execução, o aplicativo poderá determinar os metadados à medida que cria a instrução. Por exemplo, quando o aplicativo constrói a cláusula

WHERE OrderID = ?  

ele pode chamar SQLColumns para a coluna OrderID.

A única situação em que o aplicativo não pode determinar facilmente os metadados do parâmetro é quando o usuário insere uma instrução parametrizada. Nesse caso, o aplicativo chama SQLPrepare para preparar a instrução, SQLNumParams para determinar o número de parâmetros e SQLDescribeParam para descrever cada parâmetro. No entanto, como foi observado anteriormente, a maioria das fontes de dados não fornece uma maneira para o driver descobrir metadados de parâmetro, portanto, SQLDescribeParam não é amplamente suportado.