Tipos de dados do C padrão
Se um aplicativo especificar SQL_C_DEFAULT em SQLBindCol, SQLGetData ou SQLBindParameter, o driver pressupõe que o tipo de dados C do buffer de saída ou entrada corresponde ao tipo de dados SQL da coluna ou parâmetro ao qual o buffer está associado.
Importante
Aplicativos interoperáveis não devem usar SQL_C_DEFAULT. Em vez disso, eles devem sempre especificar o tipo C do buffer que estão usando. Isso ocorre porque os drivers nem sempre podem determinar corretamente o tipo C padrão, pelos seguintes motivos:
Se o DBMS promover um tipo de dados SQL de uma coluna ou parâmetro, o driver não poderá determinar o tipo de dados SQL original de uma coluna ou parâmetro. Portanto, ele não pode determinar o tipo de dados C padrão correspondente.
Se o driver não puder determinar se uma determinada coluna ou parâmetro está assinado, como geralmente é o caso quando isso é tratado pelo DBMS, o driver não poderá determinar se o tipo de dados C padrão correspondente deve ser assinado ou não assinado.
Como SQL_C_DEFAULT é fornecido apenas como uma conveniência de programação, o aplicativo não perde nenhuma funcionalidade quando especifica o tipo de dados C real.
Uma tabela mostrando o tipo de dados C padrão para cada tipo de dados SQL está incluída em Convertendo dados de tipos de dados SQL para C, mais adiante neste apêndice.