SQL à C : Caractère
Les identificateurs des types de données SQL ODBC de caractère sont les suivants :
- SQL_CHAR
- SQL_VARCHAR
- SQL_LONGVARCHAR
- SQL_WCHAR
- SQL_WVARCHAR
- SQL_WLONGVARCHAR
Le tableau suivant montre les types de données ODBC C vers lesquels les données SQL caractères peuvent être converties. Pour obtenir une explication des colonnes et des termes de la table, consultez Conversion de données de SQL en types de données C.
Identificateur de type C | Test | TargetValuePtr | StrLen_or_IndPtr | SQLSTATE |
---|---|---|---|---|
SQL_C_CHAR | Longueur en octets des données <BufferLength Longueur en octets des données >= BufferLength |
Données Données tronquées |
Longueur des données en octets Longueur des données en octets |
n/a 01004 |
SQL_C_WCHAR | Longueur de caractères des données <BufferLength Longueur des caractères des données >= BufferLength |
Données Données tronquées |
Longueur des données en caractères Longueur des données en caractères |
n/a 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 | Données converties sans troncation[b] Données converties avec troncation de chiffres fractionnaires[a] La conversion de données entraînerait la perte de chiffres entiers (par opposition à des chiffres fractionnaires)[a] Les données ne sont pas un littéral numérique[b] |
Données Données tronquées Indéfini Indéfini |
Nombre d’octets du type de données C Nombre d’octets du type de données C Indéfini Indéfini |
n/a 01S07 22003 22018 |
SQL_C_FLOAT SQL_C_DOUBLE | Les données se trouvent dans la plage du type de données vers lequel le nombre est converti[a] Les données se trouvent en dehors de la plage du type de données vers lequel le nombre est converti[a] Les données ne sont pas un littéral numérique[b] |
Données Indéfini Indéfini |
Taille du type de données C Indéfini Indéfini |
n/a 22003 22018 |
SQL_C_BIT | Les données sont 0 ou 1 Les données sont supérieures à 0, inférieures à 2 et non égales à 1 Les données sont inférieures à 0 ou supérieures ou égales à 2 Les données ne sont pas un littéral numérique |
Données Données tronquées Indéfini Indéfini |
1[b] 1[b] Indéfini Indéfini |
n/a 01S07 22003 22018 |
SQL_C_BINARY | Longueur en octets des données <= BufferLength Longueur en octets des données >BufferLength |
Données Données tronquées |
Longueur des données en octets Longueur des données |
n/a 01004 |
SQL_C_TYPE_DATE | La valeur de données est une valeur de date valide[a] La valeur de données est une valeur d’horodatage valide ; la partie de temps est égale à zéro[a] La valeur de données est une valeur d’horodatage valide ; la partie time est différente de zéro[a],[c] La valeur de données n’est pas une valeur date-valeur ou timestamp-value valide[a] |
Données Données Données tronquées Indéfini |
6[b] 6[b] 6[b] Indéfini |
n/a n/a 01S07 22018 |
SQL_C_TYPE_TIME | La valeur de données est une valeur de temps valide et la valeur de fraction de secondes est 0[a] La valeur de données est une valeur d’horodatage ou une valeur de temps valide ; fraction de secondes la portion est égale à zéro[a],[d] La valeur de données est une valeur d’horodatage valide ; fractions de secondes la partie est différente de zéro[a],[d],[e] La valeur de données n’est pas une valeur de temps ou une valeur d’horodatage valide[a] |
Données Données Données tronquées Indéfini |
6[b] 6[b] 6[b] Indéfini |
n/a n/a 01S07 22018 |
SQL_C_TYPE_TIMESTAMP | La valeur de données est une valeur d’horodatage ou une valeur de temps valide ; fractions de secondes non tronquées[a] La valeur de données est une valeur d’horodatage ou une valeur de temps valide ; fractions de secondes tronquées[a] La valeur de données est une valeur de date valide[a] La valeur de données est une valeur de temps valide[a] La valeur de données n’est pas une valeur de date,d’heure ou de valeur d’horodatage valide[a] |
Données Données tronquées Données[f] Données[g] Indéfini |
16[b] 16[b] 16[b] 16[b] Indéfini |
n/a 01S07 n/a n/a 22018 |
Tous les types d’intervalleS C | La valeur de données est une valeur d’intervalle valide ; aucune troncation La valeur de données est une valeur d’intervalle valide ; troncation d’un ou plusieurs champs de fin Les données sont un intervalle valide ; une précision significative du champ de pointe est perdue La valeur de données n’est pas une valeur d’intervalle valide |
Données Données tronquées Indéfini Indéfini |
Longueur des données en octets Longueur des données en octets Indéfini Indéfini |
n/a 01S07 22015 22018 |
[a] La valeur de BufferLength est ignorée pour cette conversion. Le pilote suppose que la taille de *TargetValuePtr est la taille du type de données C.
[b] Il s’agit de la taille du type de données C correspondant.
[c] La partie de temps de la valeur timestamp est tronquée.
[d] La partie date de la valeur timestamp est ignorée.
[e] La partie fractionnaire de secondes de l’horodatage est tronquée.
[f] Les champs d’heure de la structure timestamp sont définis sur zéro.
[g] Les champs de date de la structure timestamp sont définis sur la date actuelle.
Espaces supplémentaires
Les espaces de début et de fin sont ignorés lorsque les données de caractères SQL sont converties en l’un des types suivants :
- Date
- numeric
- time
- timestamp
- données interval C