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.