SQL a C: Carácter
Los identificadores de los tipos de datos ODBC SQL de caracteres son los siguientes:
- SQL_CHAR
- SQL_VARCHAR
- SQL_LONGVARCHAR
- SQL_WCHAR
- SQL_WVARCHAR
- SQL_WLONGVARCHAR
En la tabla siguiente se muestran los tipos de datos ODBC C a los que se pueden convertir los datos SQL de caracteres. Para obtener una explicación de las columnas y los términos de la tabla, vea Convertir datos de SQL a tipos de datos de C.
Identificador de tipo C | Prueba | TargetValuePtr | StrLen_or_IndPtr | SQLSTATE |
---|---|---|---|---|
SQL_C_CHAR | Longitud de bytes de BufferLength de datos < Longitud de bytes de datos >= BufferLength |
data Datos truncados |
Longitud de los datos en bytes Longitud de los datos en bytes |
N/D 01004 |
SQL_C_WCHAR | Longitud de caracteres de BufferLength de datos < Longitud de caracteres de datos >= BufferLength |
data Datos truncados |
Longitud de datos en caracteres Longitud de datos en caracteres |
N/D 01004 |
SQL_C_STINYINT SQL_C_UTINYINT SQL_C_TINYINT SQL_C_SBIGINT SQL_C_UBIGINT SQL_C_SSHORT SQL_C_USHORT SQL_C_SHORT SQL_C_SLONG SQL_C_ULONG SQL_C_LONG SQL_C_NUMERIC | Datos convertidos sin truncamiento[b] Datos convertidos con truncamiento de dígitos fraccionarios[a] La conversión de datos provocaría la pérdida de dígitos enteros (en lugar de fracciones) [a] Los datos no son un literal numérico[b] |
data Datos truncados No definido No definido |
Número de bytes del tipo de datos C Número de bytes del tipo de datos C No definido No definido |
N/D 01S07 22003 22018 |
SQL_C_FLOAT SQL_C_DOUBLE | Los datos están dentro del intervalo del tipo de datos al que se va a convertir el número[a] Los datos están fuera del intervalo del tipo de datos al que se va a convertir el número[a] Los datos no son un literal numérico[b] |
data No definido No definido |
Tamaño del tipo de datos de C No definido No definido |
N/D 22003 22018 |
SQL_C_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 Los datos no son literales numéricos |
data Datos truncados No definido No definido |
1[b] 1[b] No definido No definido |
N/D 01S07 22003 22018 |
SQL_C_BINARY | Longitud de bytes de datos <= BufferLength Longitud de bytes de BufferLength de datos > |
data Datos truncados |
Longitud de los datos en bytes Longitud de los datos |
N/D 01004 |
SQL_C_TYPE_DATE | El valor de datos es un valor de fecha válido[a] El valor de datos es un valor de marca de tiempo válido; la parte de tiempo es cero[a] El valor de datos es un valor de marca de tiempo válido; la parte de tiempo es distinta de cero[a],[c] El valor de datos no es un valor de fecha o marca de tiempo válido[a] |
Datos Datos Datos truncados No definido |
6[b] 6[b] 6[b] No definido |
N/D N/D 01S07 22018 |
SQL_C_TYPE_TIME | El valor de datos es un valor de tiempo válido y el valor de fracciones de segundo es 0[a] El valor de datos es un valor de marca de tiempo válido o un valor de tiempo válido; fracciones de segundos es cero[a],[d] El valor de datos es un valor de marca de tiempo válido; fracciones de segundos es distinto de cero[a],[d],[e] El valor de datos no es un valor de tiempo o un valor de marca de tiempo válido[a] |
Datos Datos Datos truncados No definido |
6[b] 6[b] 6[b] No definido |
N/D N/D 01S07 22018 |
SQL_C_TYPE_TIMESTAMP | El valor de datos es un valor de marca de tiempo válido o un valor de tiempo válido; fracciones de segundos no truncadas[a] El valor de datos es un valor de marca de tiempo válido o un valor de tiempo válido; fracciones de segundos truncadas[a] El valor de datos es un valor de fecha válido[a] El valor de datos es un valor de tiempo válido[a] El valor de datos no es un valor de fecha y hora válido, un valor de tiempo o un valor de marca de tiempo[a] |
data Datos truncados Datos[f] Datos[g] No definido |
16[b] 16[b] 16[b] 16[b] No definido |
N/D 01S07 N/D N/D 22018 |
Todos los tipos de intervalo de C | El valor de datos es un valor de intervalo válido; sin truncamiento El valor de datos es un valor de intervalo válido; truncamiento de uno o varios campos finales Los datos son intervalos válidos; Se pierde la precisión significativa del campo inicial El valor de datos no es un valor de intervalo válido |
data Datos truncados No definido No definido |
Longitud de los datos en bytes Longitud de los datos en bytes No definido No definido |
N/D 01S07 22015 22018 |
[a] El valor de BufferLength se omite para esta conversión. El controlador supone que el tamaño de *TargetValuePtr es el tamaño del tipo de datos de C.
[b] Este es el tamaño del tipo de datos de C correspondiente.
[c] La parte de tiempo del valor de marca de tiempo se trunca.
[d] Se omite la parte de fecha del valor de marca de tiempo .
[e] La parte fraccionaria de segundos de la marca de tiempo se trunca.
[f] Los campos de hora de la estructura de marca de tiempo se establecen en cero.
[g] Los campos de fecha de la estructura de marca de tiempo se establecen en la fecha actual.
Espacios adicionales
Los espacios iniciales y finales se omiten cuando los datos de caracteres SQL se convierten en cualquiera de los siguientes tipos:
- date
- NUMERIC
- time
- timestamp
- datos de interval C