Partilhar via


Descrição de parâmetros

O SQLBindParameter tem argumentos que descrevem o parâmetro: o seu tipo SQL, precisão e escala. O driver utiliza esta informação, ou metadados, para converter o valor do parâmetro para o tipo necessário pela fonte de dados. À primeira vista, pode parecer que o driver está numa melhor posição para conhecer os metadados dos parâmetros do que a aplicação; Afinal, o driver pode facilmente descobrir os metadados de uma coluna de conjunto de resultados. Acontece que não é esse o caso. Em primeiro lugar, a maioria das fontes de dados não fornece uma forma para o driver descobrir metadados de parâmetros. Em segundo lugar, a maioria das aplicações já conhece os metadados.

Se uma instrução SQL estiver codificada diretamente na aplicação, o autor da aplicação já conhece o tipo de cada parâmetro. Se uma instrução SQL for construída pela aplicação em tempo de execução, a aplicação pode determinar os metadados enquanto constrói a instrução. Por exemplo, quando a aplicação constrói a cláusula

WHERE OrderID = ?  

pode chamar SQLColumns para a coluna OrderID.

A única situação em que a aplicação não consegue determinar facilmente os metadados dos parâmetros é quando o utilizador insere uma instrução parametrizada. Neste caso, a aplicação 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 já foi referido, a maioria das fontes de dados não fornece uma forma para o driver descobrir metadados de parâmetros, pelo que o SQLDescribeParam não é amplamente suportado.