Partilhar via


SQL para C: caractere

Os identificadores para os tipos de dados SQL ODBC de caractere são os seguintes:

  • SQL_CHAR
  • SQL_VARCHAR
  • SQL_LONGVARCHAR
  • SQL_WCHAR
  • SQL_WVARCHAR
  • SQL_WLONGVARCHAR

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

Identificador de tipo C Teste TargetValuePtr Strlen_or_indptr SQLSTATE
SQL_C_CHAR Comprimento de bytes de dados <BufferLength

Comprimento de bytes de dados >= BufferLength
Dados

Dados truncados
Comprimento dos dados em bytes

Comprimento dos dados em bytes
n/d

01004
SQL_C_WCHAR Comprimento do caractere de dados <BufferLength

Comprimento do caractere de dados >= BufferLength
Dados

Dados truncados
Comprimento dos dados em caracteres

Comprimento dos dados em 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 Dados convertidos sem truncamento[b]

Dados convertidos com truncamento de dígitos fracionários[a]

A conversão de dados resultaria na perda de dígitos inteiros (em vez de fracionários) [a]

Os dados não são um literal numérico[b]
Dados

Dados truncados

Indefinido

Indefinido
Número de bytes do tipo de dados C

Número de bytes do tipo de dados C

Indefinido

Indefinido
n/d

01S07

22003

22018
SQL_C_FLOAT SQL_C_DOUBLE Os dados estão dentro do intervalo do tipo de dados no qual o número está sendo convertido[a]

Os dados estão fora do intervalo do tipo de dados no qual o número está sendo convertido[a]

Os dados não são um literal numérico[b]
Dados

Indefinido

Indefinido
Tamanho do tipo de dados C

Indefinido

Indefinido
n/d

22003

22018
SQL_C_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 maiores ou iguais a 2

Os dados não são um literal numérico
Dados

Dados truncados

Indefinido

Indefinido
1[b]

1[b]

Indefinido

Indefinido
n/d

01S07

22003

22018
SQL_C_BINARY Comprimento de bytes de dados <= BufferLength

Comprimento de bytes de dados >BufferLength
Dados

Dados truncados
Comprimento dos dados em bytes

Comprimento dos dados
n/d

01004
SQL_C_TYPE_DATE O valor de dados é um valor de data válido[a]

O valor de dados é um valor de carimbo de data/hora válido; a parte de tempo é zero[a]

O valor de dados é um valor de carimbo de data/hora válido; a parte de tempo é diferente de zero[a],[c]

O valor de dados não é um valor de data/hora válido ou um valor de carimbo de data/hora[a]
Dados

Dados

Dados truncados

Indefinido
6[b]

6[b]

6[b]

Indefinido
n/d

n/d

01S07

22018
SQL_C_TYPE_TIME O valor de dados é um valor de tempo válido e o valor de segundos fracionários é 0[a]

O valor de dados é um valor de carimbo de data/hora válido ou um valor de tempo válido; a parte de segundos fracionários é zero[a],[d]

O valor de dados é um valor de carimbo de data/hora válido; a parte de segundos fracionários é diferente de zero[a],[d],[e]

O valor de dados não é um valor de data/hora válido ou um valor de carimbo de data/hora[a]
Dados

Dados

Dados truncados

Indefinido
6[b]

6[b]

6[b]

Indefinido
n/d

n/d

01S07

22018
SQL_C_TYPE_TIMESTAMP O valor de dados é um valor de carimbo de data/hora válido ou um valor de tempo válido; fração de segundos porção não truncada[a]

O valor de dados é um valor de carimbo de data/hora válido ou um valor de tempo válido; fração de segundos porção truncada[a]

O valor de dados é um valor de data válido[a]

O valor de dados é um valor de tempo válido[a]

O valor de dados não é um valor de data e hora válido, um valor de data/hora ou um valor de carimbo de data/hora[a]
Dados

Dados truncados

Dados[f]

Dados[g]

Indefinido
16[b]

16[b]

16[b]

16[b]

Indefinido
n/d

01S07

n/d

n/d

22018
Todos os tipos de intervalo C O valor de dados é um valor de intervalo válido; sem truncamento

O valor de dados é um valor de intervalo válido; truncamento de um ou mais campos à direita

Os dados são um intervalo válido; precisão significativa do campo à esquerda é perdida

O valor de dados não é um valor de intervalo válido
Dados

Dados truncados

Indefinido

Indefinido
Comprimento dos dados em bytes

Comprimento dos dados em bytes

Indefinido

Indefinido
n/d

01S07

22015

22018

[a] O valor de BufferLength é ignorado para essa conversão. O driver pressupõe que o tamanho de *TargetValuePtr seja do tamanho do tipo de dados C.

[b] Esse é o tamanho do tipo de dados C correspondente.

[c] A parte de tempo do valor do carimbo de data/ hora é truncada.

[d] A parte de data do carimbo de data/hora-valor é ignorada.

[e] A parte de segundos fracionários do carimbo de data/hora é truncada.

[f] Os campos de tempo da estrutura de carimbo de data/hora são definidos como zero.

[g] Os campos de data da estrutura de carimbo de data/hora são definidos como a data atual.

Espaços extras

Os espaços à esquerda e à direita são ignorados quando os dados de caracteres SQL são convertidos em qualquer um dos seguintes tipos:

  • date
  • numeric
  • time
  • timestamp
  • dados do intervalo C