3. KingbaseES的OCCI特性支持
本部分描述KingbaseES的OCCI的函数和句柄支持,以及支持的数据类型。
3.1. 函数和句柄的支持
KingbaseES对于OCCI的函数支持情况,如下表所示:
表 3.1.7 函数支持表功能描述 | 类 | 方法函数 | KES兼容 |
|---|
连接数据库 | Enviroment Class | createConnection() | 支持 |
createEnviroment() | 支持 |
getOCIEnviroment() | 支持 |
terminateConnectionPool() | 支持 |
terminateEnvironment() | 支持 |
Pooling Connections Class | | 不支持 |
StatelessConnectionPool Class | | 不支持 |
执行 DDL 、DML 、DQL 语句 | Statement Class | addIteration() | 支持 |
closeResultSet() | 支持 |
execute() | 支持 |
executeArrayUpdate() | 支持 |
executeQuery() | 支持 |
executeUpdate() | 支持 |
getBlob() | 支持 |
getBytes() | 支持 |
getClob() | 支持 |
getCursor() | 支持 |
getDate() | 支持 |
getDouble() | 支持 |
getFloat() | 支持 |
getInt() | 支持 |
getMaxIterations() | 支持 |
getNumber() | 支持 |
getResultSet() | 支持 |
getTimestamp() | 支持 |
registerOutParam() | 支持 |
setAutoCommit() | 支持 |
setBlob() | 支持 |
setBytes() | 支持 |
setClob() | 支持 |
setDate() | 支持 |
setDataBuffer() | 支持 |
setDouble() | 支持 |
setFloat() | 支持 |
setInt() | 支持 |
setMaxIterations() | 支持 |
setMaxParamSize() | 支持 |
setNull() | 支持 |
setNumber() | 支持 |
setSQL() | 支持 |
setString() | 支持 |
Streamed Reads and Writes | readBuffer() | 支持 |
readLastBuffer() | 支持 |
writeBuffer() | 支持 |
writeLastBuffer() | 支持 |
status() | 支持 |
ResultSet Class | getBlob() | 支持 |
getBytes() | 支持 |
getClob() | 支持 |
getColumnListMetaData() | 支持 |
getDate() | 支持 |
getDouble() | 支持 |
getFloat() | 支持 |
getInt() | 支持 |
getMaxColumnSize() | 支持 |
getNumArrayRows() | 支持 |
getNumber() | 支持 |
getString() | 支持 |
getTimestamp() | 支持 |
isNull() | 支持 |
next() | 支持 |
setDataBuffer() | 支持 |
setPrefetchRowCount() | 支持 |
setMaxColumnSize() | 支持 |
异常处理 | SQLException Class | getErrorCode() | 支持 |
getMessage() | 支持 |
BatchSQLException Class | | 不支持 |
对象编程 | Ref Class | | 不支持 |
PObject Class | | 不支持 |
数据转换 | Data Conversions for LOB Data Types | | 支持 |
Data Conversions for Date, Timestamp, and Interval Data Types | | 支持 |
元数据 | MetaData Class | MetaData() | 不支持 |
getAttributeCount() | 不支持 |
getAttributeId() | 不支持 |
getAttributeType() | 不支持 |
getBoolean() | 不支持 |
getInt() | 支持 |
getMetaData() | 不支持 |
getNumber() | 不支持 |
getRef() | 不支持 |
getString() | 支持 |
getTimeStamp() | 不支持 |
getUInt() | 不支持 |
getUString() | 不支持 |
getVector() | 支持 |
operator=() | 不支持 |
KingbaseES对OCCI的属性兼容,如下表所示:
表 3.1.8 属性兼容表描述 | 属性 | 属性值 | 兼容情况 |
|---|
元信息 | Parameter Attributes | ATTR_OBJ_ID | 不支持 |
ATTR_OBJ_NAME | 不支持 |
ATTR_OBJ_SCHEMA | 不支持 |
ATTR_OBJ_PTYPE | 不支持 |
ATTR_TIMESTAMP | 不支持 |
Table and View Attributes | ATTR_OBJID | 不支持 |
ATTR_NUM_COLS | 支持 |
ATTR_LIST_COLUMNS | 支持 |
ATTR_REF_TDO | 不支持 |
ATTR_IS_TEMPORARY | 不支持 |
ATTR_IS_TYPED | 不支持 |
ATTR_DURATION | 不支持 |
Procedure, Function, and Subprogram Attributes | ATTR_LIST_ARGUMENTS | 支持 |
ATTR_IS_INVOKER_RIGHTS | 不支持 |
ATTR_NAME | 支持 |
ATTR_OVERLOAD_ID | 不支持 |
Package Attributes | ATTR_LIST_SUBPROGRAMS | 支持 |
ATTR_IS_INVOKER_RIGHTS | 不支持 |
Type Attributes | 全部 | 不支持 |
Type Attribute Attributes | ATTR_DATA_SIZE | 支持 |
ATTR_TYPECODE | 不支持 |
ATTR_DATA_TYPE | 支持 |
ATTR_NAME | 支持 |
ATTR_PRECISION | 支持 |
ATTR_SCALE | 支持 |
ATTR_TYPE_NAME | 不支持 |
ATTR_SCHEMA_NAME | 不支持 |
ATTR_REF_TDO | 不支持 |
ATTR_CHARSET_ID | 不支持 |
ATTR_CHARSET_FORM | 不支持 |
ATTR_FSPRECISION | 不支持 |
ATTR_LFPRECISION | 不支持 |
Type Method Attributes | 全部 | 不支持 |
Collection Attributes | 全部 | 不支持 |
Synonym Attributes | 全部 | 不支持 |
Sequence Attributes | 全部 | 不支持 |
Column Attributes | ATTR_DATA_SIZE | 支持 |
ATTR_DATA_TYPE | 支持 |
ATTR_NAME | 支持 |
ATTR_PRECISION | 支持 |
ATTR_SCALE | 支持 |
ATTR_IS_NULL | 支持 |
ATTR_TYPE_NAME | 不支持 |
ATTR_SCHEMA_NAME | 不支持 |
ATTR_REF_TDO | 不支持 |
ATTR_CHARSET_ID | 不支持 |
ATTR_CHARSET_FORM | 不支持 |
Argument and Result Attributes | ATTR_NAME | 支持 |
ATTR_POSITION | 支持 |
ATTR_TYPECODE | 支持 |
ATTR_DATA_TYPE | 支持 |
ATTR_DATA_SIZE | 支持 |
ATTR_PRECISION | 支持 |
ATTR_SCALE | 支持 |
ATTR_LEVEL | 不支持 |
ATTR_HAS_DEFAULT | 不支持 |
ATTR_LIST_ARGUMENTS | 支持 |
ATTR_IOMODE | 不支持 |
ATTR_RADIX | 不支持 |
ATTR_IS_NULL | 支持 |
ATTR_TYPE_NAME | 不支持 |
ATTR_SCHEMA_NAME | 不支持 |
ATTR_SUB_NAME | 不支持 |
ATTR_LINK | 不支持 |
ATTR_REF_TDO | 不支持 |
ATTR_CHARSET_ID | 不支持 |
ATTR_CHARSET_FORM | 不支持 |
List Attributes | ATTR_LIST_COLUMNS | 支持 |
ATTR_LIST_ARGUMENTS | 支持 |
ATTR_LIST_SUBPROGRAMS | 支持 |
ATTR_LIST_TYPE_ATTRIBUTES | 不支持 |
ATTR_LIST_TYPE_METHODS | 不支持 |
ATTR_LIST_OBJECTS | 不支持 |
ATTR_LIST_SCHEMAS | 不支持 |
Schema Attributes | ATTR_LIST_OBJECTS | 不支持 |
Database Attributes | 全部 | 不支持 |
注意
其他未在表格中列出的,暂时均默认为不支持。
3.2. 数据类型支持
KingbaseES 数据库中表中存放的数据类型,称为内部数据类型。
外部数据类型是在 OCCI 头文件中定义的主机语言类型。当 OCCI 应用程序绑定输入变量时,其中一个绑定参数表示变量的外部数据类型代码。
KingbaseES 对OCCI的数据类型支持情况,如下表所示:
表 3.2.28 数据类型支持表数据类型 | 类型 | 方法 | 支持情况 |
|---|
内部数据类型 | | | 参见SQL语言参考手册 |
外部数据类型 | BFILE | | 不支持 |
BDOUBLE | | 支持 |
BFLOAT | | 支持 |
BLOB | | 支持 |
CHAR | | 支持 |
CHARZ | | 不支持 |
CLOB | | 支持 |
DATE | | 支持 |
FLOAT | | 支持 |
INTEGER | | 支持 |
INTERVAL DAY TO SECOND | | 不支持 |
INTERVAL YEAR TO MONTH | | 不支持 |
LONG | | 不支持 |
LONG RAW | | 不支持 |
LONG VARCHAR | | 不支持 |
LONG VARRAW | | 不支持 |
NCLOB | | 支持 |
NUMBER | | 支持 |
OCCI BFILE | | 不支持 |
OCCI BLOB | | 支持 |
OCCI BYTES | | 支持 |
OCCI CLOB | Clob() | 支持 |
append() | 支持 |
close() | 支持 |
closeStream() | 支持 |
copy() | 支持 |
getCharSetForm() | 不支持 |
getCharSetId() | 不支持 |
getCharSetIdUString() | 不支持 |
getChunkSize() | 支持 |
getContentType() | 不支持 |
getOptions() | 不支持 |
getStream() | 支持 |
isInitialized() | 支持 |
isNull() | 支持 |
isOpen() | 支持 |
length() | 支持 |
open() | 支持 |
operator=() | 支持 |
operator==() | 支持 |
operator!=() | 支持 |
read() | 支持 |
setCharSetId() | 不支持 |
setCharSetIdUString() | 不支持 |
setCharSetForm() | 不支持 |
setContentType() | 不支持 |
setEmpty() | 支持 |
setNull() | 支持 |
setOptions() | 不支持 |
trim() | 支持 |
write() | 支持 |
writeChunk() | 支持 |
OCCI DATE | Date() | 不支持 |
addDays() | 不支持 |
addMonths() | 不支持 |
daysBetween() | 不支持 |
fromBytes() | 不支持 |
fromText() | 不支持 |
getDate() | 支持 |
getSystemDate() | 不支持 |
isNull() | 不支持 |
lastDay() | 不支持 |
nextDay() | 不支持 |
operator=() | 不支持 |
operator==() | 不支持 |
operator!=() | 不支持 |
operator>() | 不支持 |
operator>=() | 不支持 |
operator=() | 不支持 |
operator>() | 不支持 |
setDate() | 支持 |
setNull() | 不支持 |
toBytes() | 不支持 |
toText() | 不支持 |
toZone() | 不支持 |
OCCI INTERVALDS | | 不支持 |
OCCI INTERVALYM | | 不支持 |
OCCI NUMBER | Number() | 支持 |
abs() | 支持 |
arcCos() | 不支持 |
arcSin() | 不支持 |
arcTan() | 不支持 |
arcTan2() | 不支持 |
ceil() | 不支持 |
cos() | 不支持 |
exp() | 不支持 |
floor() | 不支持 |
fromBytes() | 不支持 |
fromText() | 支持 |
hypCos() | 不支持 |
hypSin() | 不支持 |
hypTan() | 不支持 |
intPower() | 不支持 |
isNull() | 支持 |
ln() | 不支持 |
log() | 不支持 |
operator++() | 支持 |
operator--() | 支持 |
operator*() | 不支持 |
operator/() | 不支持 |
operator%() | 不支持 |
operator+() | 不支持 |
operator-() | 支持 |
operator<() | 不支持 |
operator<=() | 不支持 |
operator>() | 不支持 |
operator>=() | 不支持 |
operator=() | 支持 |
operator==() | 不支持 |
operator!=() | 不支持 |
operator*=() | 支持 |
operator/=() | 支持 |
operator%=() | 支持 |
operator+=() | 支持 |
operator-=() | 支持 |
operator char() | 支持 |
operator signed char() | 支持 |
operator double() | 支持 |
operator float() | 支持 |
operator int() | 支持 |
operator long() | 支持 |
operator long double() | 支持 |
operator short() | 支持 |
operator unsigned char() | 支持 |
operator unsigned int() | 支持 |
operator unsigned long() | 支持 |
operator unsigned short() | 支持 |
power() | 不支持 |
prec() | 不支持 |
round() | 不支持 |
setNull() | 支持 |
shift() | 不支持 |
sign() | 不支持 |
sin() | 不支持 |
squareroot() | 不支持 |
tan() | 不支持 |
toBytes() | 不支持 |
toText() | 支持 |
trunc() | 不支持 |
OCCI POBJECT | | 不支持 |
OCCI REF | | 不支持 |
OCCI REFANY | | 不支持 |
OCCI STRING | STL String | |
OCCI TIMESTAMP | Timestamp() | 支持 |
fromText() | 不支持 |
getDate() | 支持 |
getTime() | 支持 |
getTimeZoneOffset() | 不支持 |
intervalAdd() | 不支持 |
intervalSub() | 不支持 |
isNull() | 支持 |
operator=() | 不支持 |
operator==() | 不支持 |
operator!=() | 不支持 |
operator>() | 不支持 |
operator>=() | 不支持 |
operator<() | 不支持 |
operator<=() | 不支持 |
setDate() | 支持 |
setNull() | 支持 |
setTime() | 支持 |
setTimeZoneOffset() | 不支持 |
subDS() | 不支持 |
subYM() | 不支持 |
toText() | 支持 |
OCCI VECTOR | | |
RAW | | 不支持 |
REF | | 不支持 |
ROWID | | 不支持 |
STRING | | 不支持 |
TIMESTAMP | | 不支持 |
TIMESTAMP WITH LOCAL TIME ZONE | | 不支持 |
TIMESTAMP WITH TIME ZONE | | 不支持 |
UNSIGNED INT | | 不支持 |
VARCHAR | | 不支持 |
VARCHAR2 | | 不支持 |
VARNUM | | 不支持 |
VARRAW | | 不支持 |
NATIVE DOUBLE | | 不支持 |
NATIVE FLOAT | | 不支持 |
通常,OCCI 应用程序不使用数据的内部数据类型表示,而是使用由编写它们的语言预定义的宿主语言数据类型。当数据在 OCCI 客户端应用程序和数据库表之间传输时,OCCI 库会在内部数据类型和外部数据类型之间转换数据。
内部数据类型与外部数据类型之间的映射关系,如下表所示:
表 3.2.29 数据类型映射表外部数据类型 | 内部数据类型 |
|---|
VARCHAR2 | SQLT_CHR |
NUMBER | SQLT_NUM |
INTEGER | SQLT_INT |
FLOAT | SQLT_FLT |
NULL-terminated STRING | SQLT_STR |
VARNUM | SQLT_VNU |
LONG | SQLT_LNG |
VARCHAR | SQLT_VCS |
DATE | SQLT_DAT |
native float | SQLT_BFLOAT |
native double | SQLT_BDOUBLE |
UNSIGNED INT | SQLT_UIN |
LONG VARCHAR | SQLT_LVC |
CHAR | SQLT_AFC |
CHARZ | SQLT_AVC |
NAMED DATATYPE | SQLT_NTY |
REF | SQLT_REF |
Character LOB descriptor | SQLT_CLOB |
Binary LOB descriptor | SQLT_BLOB |
Binary FILE descriptor | SQLT_FILE |
JSON descriptor | SQLT_JSON |
OCI STRING type | SQLT_VST |
OCI DATE type | SQLT_ODT |
ANSI DATE descriptor | SQLT_DATE |
TIMESTAMP descriptor | SQLT_TIMESTAMP |
TIMESTAMP WITH TIME ZONE descriptor | SQLT_TIMESTAMP_TZ |
INTERVAL YEAR TO MONTH descriptor | SQLT_TIMESTAMP_YM |
INTERVAL DAY TO SECOND descriptor | SQLT_TIMESTAMP_DS |
TIMESTAMP WITH LOCAL TIME descriptor | SQLT_TIMESTAMP_LTZ |