Compartilhar via


Converter dados de C para tipos de dados SQL

Quando um aplicativo chama SQLExecute ou SQLExecDirect, o driver recupera os dados de todos os parâmetros associados 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 a SQLBindCol. Para parâmetros de dados em execução, o aplicativo envia os dados do 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 descritor SQL_DESC_CONCISE_TYPE for SQL_C_DEFAULT). Um círculo oco indica uma conversão com suporte.

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

Conversões com suporte: tipos de dados ODBC C para SQL

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; os drivers são necessários para dar 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 serã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 SQL ODBC 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 der suporte à conversão do tipo de dados C ODBC 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 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 para 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 como 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 bytes de dados - Número de bytes de dados SQL disponíveis para enviar para a fonte de dados, se os dados serão truncados ou não 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 na 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 menos, o ponto decimal e o 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.