#docslug#/ecob/ecob/V1.1.6/supported-data-types OceanBase Embedded SQL in C (ECOB) supports internal data types of Oracle and external data types of C language.
Internal data types
The internal data types of ECOB refer to the data types that can be used in OceanBase databases. The following table describes internal data types that are supported by ECOB.
| Internal data type | Description |
|---|---|
| CHAR | A string with a fixed length. Maximum length: 2,000 bytes. |
| VARCHAR2 | A string with a changeable length. Maximum length: 32,767 bytes. |
| NUMBER | The numeric data type. Valid values of bits: -84 to 127. The value precision can be 1 to 38. |
| INT | The integer data type. Maximum bits: 38. |
| BINARY_FLOAT | A 32-bit floating-point number. Value values: [1.17549E-38F, 3.40282E+38F]. |
| BINARY_DOUBLE | A 64-bit floating-point number. Value values: [2.22507485850720E-308, 1.79769313486231E+308]. |
| DATE | The date type. Format: YYYY-MM-DD HH:MI:SS. |
| TIMESTAMP | The timestamp type. Format: YYYY-MM-DD HH:MI:SS [.FFFFFFFFF]. |
Note
You can only insert
TIMESTAMPdata. TheTIMESTAMPdata cannot be written to or read from variables in C language.
External data types
The external data types of ECOB are used to specify the storage types of host variables, which are the data types of C language. When you write data into OceanBase databases, ECOB converts the external data types of host variables into internal data types. When you export data to an external application, ECOB converts the internal data types of OceanBase databases into external data types of host variables.
ECOB supports the conversion of host variable types such as integers, float points, and characters. ECOB also supports complex data types such as STRUCT.
Notice
You can add all supported data types into
STRUCT. However, we recommend that you do not nestSTRUCTinSTRUCT.
The following table describes the external data types supported by ECOB and the mapping between them and host variable types.
| External data type | Description | Host variable data type |
|---|---|---|
| ECOBt_char | Stores long strings with a fixed length. | char, char *, and char [] |
| ECOBt_unsigned_char | Stores long strings with a fixed length. | unsigned char |
| ECOBt_short | Stores signed short integers. | int, int *, and int[] |
| ECOBt_unsigned_short | Stores unsigned short integers. | unsigned int |
| ECOBt_int | Stores signed integers. | short, short *, and short[] |
| ECOBt_unsigned_int | Stores unsigned integers. | unsigned short |
| ECOBt_long | Stores signed long integers. | long, long *, and long[] |
| ECOBt_unsigned_long | Stores unsigned long integers. | unsigned long |
| ECOBt_long_long | Stores signed long long integers. | long long, long long *, and long long[] |
| ECOBt_unsigned_long_long | Stores unsigned long long integers. | unsigned long long |
| ECOBt_float | Stores 32-bit float numbers. | float, float *, and float[] |
| ECOBt_double | Stores 64-bit float numbers. | double, double *, and double[] |
| ECOBt_varchar | Stores strings with a variable length. | varchar varchar * varchar[] |
| ECOBt_struct | Stores structures. | struct, struct *, and struct[] |