Descrever parâmetros

SQLBindParameter tem argumentos que descrevem o parâmetro: seu tipo de SQL, precisão e escala. O driver usa essas informações ou metadados para converter o valor do parâmetro no tipo necessário para a fonte de dados. À primeira vista, pode parecer que o driver está em uma posição melhor para saber os metadados do parâmetro do que o aplicativo; Depois de tudo, o driver pode facilmente descobrir os metadados de uma coluna de conjunto de resultados. Como acontece, esse 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 SQL for em código no aplicativo, o autor do aplicativo já saberá o tipo de cada parâmetro. Se uma SQL for construída pelo aplicativo em tempo de executar, o aplicativo poderá determinar os metadados conforme ele 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 de parâmetro é quando o usuário ins institui 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 notado 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.