Compartir vía


C a SQL: Numeric

Los identificadores de los tipos de datos DE ODBC C numéricos son:

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

En la tabla siguiente se muestran los tipos de datos DE SQL ODBC a los que se pueden convertir los datos numéricos de C. Para obtener una explicación de las columnas y los términos de la tabla, vea Convertir datos de C a tipos de datos SQL.

Identificador de tipo SQL Prueba SQLSTATE
SQL_CHAR

SQL_VARCHAR

SQL_LONGVARCHAR
Número de dígitos <= Longitud de bytes de columna

Número de dígitos > Longitud de bytes de columna
N/D

22001
SQL_WCHAR

SQL_WVARCHAR

SQL_WLONGVARCHAR
Número de caracteres = Longitud de caracteres <de columna

Número de caracteres Longitud de caracteres > de columna
N/D

22001
SQL_DECIMAL[b]

SQL_NUMERIC[b]

SQL_TINYINT[b]

SQL_SMALLINT[b]

SQL_INTEGER[b]

SQL_BIGINT[b]
Datos convertidos sin truncamiento o con truncados de dígitos fraccionarios

Datos convertidos con truncamiento de dígitos enteros
N/D

22003
SQL_REAL

SQL_FLOAT

SQL_DOUBLE
Los datos están dentro del intervalo del tipo de datos al que se va a convertir el número.

Los datos están fuera del intervalo del tipo de datos al que se está convirtiendo el número.
N/D

22003
SQL_BIT Los datos son 0 o 1

Los datos son mayores que 0, menores que 2 y no iguales a 1

Los datos son menores que 0 o mayores o iguales que 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]
Datos no truncados.

Datos truncados.
N/D

22015

[a] Estas conversiones solo se admiten para los tipos de datos numéricos exactos (SQL_C_STINYINT, SQL_C_UTINYINT, SQL_C_SSHORT, SQL_C_USHORT, SQL_C_SLONG, SQL_C_ULONG o SQL_C_NUMERIC). No se admiten para los tipos de datos numéricos aproximados (SQL_C_FLOAT o SQL_C_DOUBLE). Los tipos de datos numéricos exactos de C no se pueden convertir en un tipo SQL de intervalo cuya precisión de intervalo no es un único campo.

[b] Para el caso "n/a", un controlador puede devolver opcionalmente SQL_SUCCESS_WITH_INFO y 01S07 cuando hay un truncamiento fraccional.

El controlador omite el valor de longitud o indicador al convertir datos de los tipos de datos numéricos de C y supone que el tamaño del búfer de datos es el tamaño del tipo de datos numérico de C. El valor de longitud o indicador se pasa en el argumento StrLen_or_Ind en SQLPutData y en el búfer especificado con el argumento StrLen_or_IndPtr en SQLBindParameter. El búfer de datos se especifica con el argumento DataPtr en SQLPutData y el argumento ParameterValuePtr en SQLBindParameter.