Compartilhar via


C para SQL: numérico

Os identificadores para os tipos de dados ODBC C numéricos são:

SQL_C_STINYINT

SQL_C_SLONG

SQL_C_UTINYINT

SQL_C_ULONG

SQL_C_TINYINT

SQL_C_LONG

SQL_C_SSHORT

SQL_C_FLOAT

SQL_C_USHORT

SQL_C_DOUBLE

SQL_C_SHORT

SQL_C_NUMERIC

SQL_C_SBIGINT

SQL_C_UBIGINT

A tabela a seguir mostra os tipos de dados SQL ODBC para os quais os dados C numéricos podem ser convertidos. Para obter uma explicação das colunas e dos termos na tabela, consulte Convertendo dados de C para tipos de dados SQL.

Identificador de tipo SQL Teste SQLSTATE
SQL_CHAR

SQL_VARCHAR

SQL_LONGVARCHAR
Número de dígitos <= Comprimento do byte da coluna

Número de dígitos > Comprimento do byte da coluna
n/d

22001
SQL_WCHAR

SQL_WVARCHAR

SQL_WLONGVARCHAR
Número de caracteres <= Comprimento do caractere da coluna

Número de caracteres Comprimento do caractere de coluna >
n/d

22001
SQL_DECIMAL[b]

SQL_NUMERIC[b]

SQL_TINYINT[b]

SQL_SMALLINT[b]

SQL_INTEGER[b]

SQL_BIGINT[b]
Dados convertidos sem truncamento ou com truncados de dígitos fracionários

Dados convertidos com truncamento de dígitos inteiros
n/d

22003
SQL_REAL

SQL_FLOAT

SQL_DOUBLE
Os dados estão dentro do intervalo do tipo de dados no qual o número está sendo convertido

Os dados estão fora do intervalo do tipo de dados no qual o número está sendo convertido
n/d

22003
SQL_BIT Os dados são 0 ou 1

Os dados são maiores que 0, menores que 2 e não são iguais a 1

Os dados são menores que 0 ou superiores ou iguais a 2
n/d

22001

22003
SQL_INTERVAL_YEAR[a]

SQL_INTERVAL_MONTH[a]

SQL_INTERVAL_DAY[a]

SQL_INTERVAL_HOUR[a]

SQL_INTERVAL_MINUTE[a]

SQL_INTERVAL_SECOND[a]
Dados não truncados.

Dados truncados.
n/d

22015

[a] Essas conversões têm suporte apenas para os tipos de dados numéricos exatos (SQL_C_STINYINT, SQL_C_UTINYINT, SQL_C_SSHORT, SQL_C_USHORT, SQL_C_SLONG, SQL_C_ULONG ou SQL_C_NUMERIC). Eles não têm suporte para os tipos de dados numéricos aproximados (SQL_C_FLOAT ou SQL_C_DOUBLE). Tipos de dados C numéricos exatos não podem ser convertidos em um tipo SQL de intervalo cuja precisão de intervalo não é um único campo.

[b] Para o caso "n/a", um driver pode, opcionalmente, retornar SQL_SUCCESS_WITH_INFO e 01S07 quando houver um truncamento fracionário.

O driver ignora o valor de comprimento/indicador ao converter dados dos tipos de dados C numéricos e pressupõe que o tamanho do buffer de dados seja do tamanho do tipo de dados C numérico. O valor de comprimento/indicador é passado no argumento StrLen_or_Ind em SQLPutData e no buffer especificado com o argumento StrLen_or_IndPtr em SQLBindParameter. O buffer de dados é especificado com o argumento DataPtr em SQLPutData e o argumento ParameterValuePtr em SQLBindParameter.