Compartir vía


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