OBCI 支持 OceanBase Oracle 模式下的内部数据类型和 C 语言中 <oci.h> 定义的外部类型(兼容Oracle OCI)。
内部类型
内部类型指的是 OceanBase 数据库 Oracle 模式下可使用的数据类型。
OBCI 支持的常见内部类型如下表所示:
| 名字 | 描述 | 限制 |
|---|---|---|
| char | 固定长度字符串 | 最大长度 2000 |
| varchar2 | 可变长度字符串 | 最大长度 32767 |
| number | 数值类型 | 精度取值范围 1 ~ 38 位数取值范围 -84 ~ 127 |
| int | 整形数值 | 最大值 38 位 |
| binary_float | 32 位浮点数 | 最小值:1.17549E-38F 最大值:3.40282E+38F |
| binary_double | 64 位浮点数 | 最小值:2.22507485850720E-308 最大值:1.79769313486231E+308 |
| date | 日期类型 | YYYY-MM-DD HH:MI:SS |
| timestamp | 时间类型 | YYYY-MM-DD HH:MI:SS [.FFFFFFFFF] |
外部类型
外部类型是用于指定宿主变量存储数据的类型,当输入数据到数据库时,OBCI 会将输入的宿主变量的外部类型和内部数据类型进行转换。当输出数据到外部程序时,OBCI 会将数据库中表的内部数据类型和输出的宿主外部数据类型进行转换。
OBCI 支持的常用外部类型及其对应关系如下表所示:
| 外部类型 | 编码 | 宿主变量数据类型 | OBCI 类型 |
|---|---|---|---|
| VARCHAR2 | 1 | char[n] | SQLT_CHR |
| NUMBER | 2 | unsigned char[21] | SQLT_NUM |
| 8-bit signed INTEGER | 3 | signed char | SQLT_INT |
| 16-bit signed INTEGER | 3 | signed short, signed int | SQLT_INT |
| 32-bit signed INTEGER | 3 | signed int, signed long | SQLT_INT |
| FLOAT | 4 | float, double | SQLT_FLT |
| LONG | 8 | char[n] | SQLT_LNG |
| NULL-terminated STRING | 5 | char[n+1] | SQLT_STR |
| LONG | 8 | char[n] | SQLT_LNG |
| VARCHAR | 9 | char[n+sizeof(short integer)] SQLT_VCS | VARCHAR |
| DATE | 12 | unsigned char[n] | SQLT_BIN |
| RAW | 23 | char[7] | SQLT_DAT |
| CHAR | 96 | char[n] | SQLT_AFC |
| REF | 110 | OCIRef | SQLT_REF |
| Character LOB descriptor | 112 | OCILobLocator (see note 2) | SQLT_CLOB |
| Binary LOB descriptor | 113 | OCILobLocator (see note 2) | SQLT_BLOB |
| ANSI DATE descriptor | 184 | OCIDateTime * | SQLT_DATE |
| TIMESTAMP descriptor | 187 | OCIDateTime * | SQLT_TIMESTAMP |
| TIMESTAMP WITH TIME ZONEdescriptor | 188 | OCIDateTime * | SQLT_TIMESTAMP_TZ |
| TIMESTAMP WITH LOCAL TIME ZONEdescriptor | 232 | OCIDateTime * | SQLT_TIMESTAMP_LTZ |
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




