Converter dados de C para tipos de dados SQL

Quando um aplicativo chama SQLExecute ou SQLExecDirect, o driver recupera os dados de quaisquer parâmetros vinculados a SQLBindParameter de locais de armazenamento no aplicativo. Quando um aplicativo chama SQLSetPos, o driver recupera os dados para uma operação de atualização ou adição de colunas associadas ao SQLBindCol. Para parâmetros de dados em execução, o aplicativo envia os dados de parâmetro com SQLPutData. Se necessário, o driver converte os dados do tipo de dados especificado pelo argumento ValueType em SQLBindParameter para o tipo de dados especificado pelo argumento ParameterType em SQLBindParameter e, em seguida, envia os dados para a fonte de dados.

A tabela a seguir mostra as conversões com suporte de tipos de dados ODBC C para tipos de dados ODBC SQL. Um círculo preenchido indica a conversão padrão para um tipo de dados SQL (o tipo de dados C do qual os dados serão convertidos quando o valor de ValueType ou o campo SQL_DESC_CONCISE_TYPE descritor for SQL_C_DEFAULT). Um círculo oco indica uma conversão suportada.

O formato dos dados convertidos não é afetado pela configuração de país ou região do Windows.

Supported conversions: ODBC C to SQL data types

As tabelas nas seções a seguir descrevem como o driver ou a fonte de dados converte os dados enviados para a fonte de dados; drivers são necessários para oferecer suporte a conversões de todos os tipos de dados ODBC C para os tipos de dados ODBC SQL que eles suportam. Para um determinado tipo de dados ODBC C, a primeira coluna da tabela lista os valores de entrada legais do argumento ParameterType em SQLBindParameter. A segunda coluna lista os resultados de um teste que o driver executa para determinar se ele pode converter os dados. A terceira coluna lista o SQLSTATE retornado para cada resultado por SQLExecDirect, SQLExecute, SQLBulkOperations, SQLSetPos ou SQLPutData. Os dados são enviados para a fonte de dados somente se SQL_SUCCESS for retornado.

Se o argumento ParameterType em SQLBindParameter contiver o identificador de um tipo de dados ODBC SQL que não é mostrado na tabela para um determinado tipo de dados C, SQLBindParameter retornará SQLSTATE 07006 (violação de atributo de tipo de dados restrito). Se o argumento ParameterType contiver um identificador específico do driver e o driver não oferecer suporte à conversão do tipo de dados ODBC C específico para esse tipo de dados SQL específico do driver, SQLBindParameter retornará SQLSTATE HYC00 (recurso opcional não implementado).

Se os argumentos ParameterValuePtr e StrLen_or_IndPtr especificados em SQLBindParameter forem ambos ponteiros nulos, essa função retornará SQLSTATE HY009 (uso inválido de ponteiro nulo). Embora não seja mostrado nas tabelas, um aplicativo define o valor do buffer de comprimento/indicador apontado pelo argumento StrLen_or_IndPtr de SQLBindParameter ou o valor do argumento StrLen_or_IndPtr de SQLPutData para SQL_NULL_DATA especificar um valor de dados SQL NULL. (O StrLen_or_IndPtr argumento corresponde ao campo SQL_DESC_OCTET_LENGTH_PTR do APD.) O aplicativo define esses valores para SQL_NTS para especificar que o valor em *ParameterValuePtr em SQLBindParameter ou *DataPtr em SQLPutData (apontado pelo campo SQL_DESC_DATA_PTR do APD) é uma cadeia de caracteres terminada em nulo.

Os seguintes termos são usados nas tabelas:

  • Comprimento de byte dos dados - Número de bytes de dados SQL disponíveis para enviar à fonte de dados, independentemente de os dados serem truncados antes de serem enviados para a fonte de dados. Para dados de cadeia de caracteres, isso não inclui espaço para o caractere de terminação nula.

  • Comprimento do byte da coluna - Número de bytes necessários para armazenar os dados na fonte de dados.

  • Comprimento do byte de caractere - Número máximo de bytes necessários para exibir dados em forma de caractere. Isso é definido para cada tipo de dados SQL em Tamanho de Exibição, exceto que o comprimento do byte de caractere está em bytes, enquanto o tamanho de exibição está em caracteres.

  • Número de dígitos - Número de caracteres usados para representar um número, incluindo o sinal de subtração, ponto decimal e expoente (se necessário).

  • Palavras em
    itálico - Elementos da gramática SQL. Para obter a sintaxe dos elementos gramaticais, consulte o Apêndice C: Gramática SQL.

Esta seção contém os tópicos a seguir.