ODBC标准一致性
1.概述
ODBC 定义了多个接口一致性级别,本章节中会介绍 Ignite ODBC 驱动支持哪些功能。
2.核心接口一致性
| 特性 | 支持度 | 备注 |
|---|---|---|
通过调用SQLAllocHandle和SQLFreeHandle来分配和释放所有类型的句柄。 | 是 | |
使用SQLFreeStmt函数的所有形式。 | 是 | |
通过调用SQLBindCol绑定结果集列。 | 是 | |
通过调用SQLBindParameter和SQLNumParams,在输入方向上处理动态参数,包括参数数组。 | 是 | |
| 指定绑定偏移量。 | 是 | |
使用执行时数据对话框,涉及对SQLParamData和SQLPutData的调用。 | 是 | |
通过调用SQLCloseCursor、SQLGetCursorName和SQLSetCursorName来管理游标和游标名称。 | 部分 | 实现了SQLCloseCursor,但是Ignite SQL 不支持命名游标。 |
通过调用SQLColAttribute、SQLDescribeCol、SQLNumResultCols和SQLRowCount来访问结果集的描述(元数据)。 | 是 | |
通过调用SQLColumns、SQLGetTypeInfo、SQLStatistics和SQLTables来查询数据字典。 | 部分 | SQLStatistics不支持。 |
通过调用SQLConnect、SQLDataSources、SQLDisconnect和SQLDriverConnect来管理数据源和连接,无论支持哪个ODBC级别,支持通过调用SQLDrivers获取有关驱动的信息。 | 部分 | DSN支持还未实现。 |
通过调用SQLExecDirect、SQLExecute和SQLPrepare来准备和执行 SQL 语句。 | 是 | SQL端不支持SQLPrepare。 |
通过调用SQLFetch或SQLFetchScroll,并将FetchOrientation参数设置为SQL_FETCH_NEXT,仅在正向方向上获取结果集中的一行或多行 | 是 | |
通过调用SQLGetData来获取未绑定的列。 | 是 | |
通过调用SQLGetConnectAttr、SQLGetEnvAttr和SQLGetStmtAttr获取所有属性的当前值,并通过调用SQLSetConnectAttr、SQLSetEnvAttr和SQLSetSmtAttr将所有属性设置为默认值,将某些属性设置为非默认值。 | 部分 | 并不支持所有的属性,具体见下面的表格。 |
通过调用SQLCopyDesc、SQLGetDescField、SQLGetDescRec、SQLSetDescField和SQLSetDescRec来操作描述符的某些字段。 | 不 | |
通过调用SQLGetDiagField和SQLGetDiagRec获取诊断信息。 | 是 | |
通过调用SQLGetFunctions、SQLGetInfo来检测驱动功能,并在发送到数据源之前通过调用SQLNativeSql来检测对 SQL 语句所做的任何文本替换的结果。 | 是 | |
使用SQLEndTran的语法提交事务。核心级驱动不需要支持真实事务,因此,应用程序无法为SQL_ATTR_AUTOCOMMIT连接属性指定SQL_ROLLBACK或SQL_AUTOCOMMIT_OFF。 | 是 | |
调用SQLCancel以取消执行时数据对话框,在多线程环境中,还可以取消在另一个线程中执行的ODBC函数。核心级接口一致性并不要求支持异步执行函数,也不要求使用SQLCancel取消异步执行的ODBC函数。平台和ODBC驱动都不需要多线程来同时执行独立的活动,但是ODBC驱动必须是线程安全的。对来自应用程序的请求进行序列化是实现此规范的一种符合要求的方法,尽管它可能会造成严重的性能问题。 | 不 | |
通过调用SQLSpecialColumns获取表的行标识符列SQL_BEST_ROWID行。 | 部分 | 当前的实现仅返回一个空行集。 |
3.一级接口一致性
| 特性 | 支持度 | 备注 |
|---|---|---|
| 指定数据库表和视图的架构(使用两部分命名)。 | 是 | |
| 调用 ODBC 函数的真正异步执行,如果适用,ODBC 函数在给定连接上都是同步的或全部异步的。 | 否 | |
使用可滚动游标,通过调用使用FetchOrientation参数的SQLFetchScroll,而不是SQL_FETCH_NEXT,使得访问结果集时不仅仅是向前滚动。 | 否 | |
通过调用SQLPrimaryKeys,获得表的主键。 | 是 | |
使用存储过程,通过 ODBC 转义序列进行过程调用,并通过调用SQLProcedureColumns和SQLProcedures查询有关存储过程的数据字典。 | 否 | |
通过调用SQLBrowseConnect以交互方式浏览可用服务端来连接到数据源。 | 否 | |
使用 ODBC 函数而不是 SQL 语句来执行特定的数据库操作:带有SQL_POSITION 和 SQL_REFRESH 的 SQLSetPos。 | 否 | |
通过调用SQLMoreResults,可以访问由批处理和存储过程生成的多个结果集的内容。 | 是 | |
分隔跨越多个 ODBC 函数的事务,具有真正的原子性,并能够在SQLEndTran中指定SQL_ROLLBACK。 | 是 |
4.二级接口一致性
| 特性 | 支持度 | 备注 |
|---|---|---|
| 使用数据库表和视图的三部分名称。 | 否 | Ignite SQL 不支持目录。 |
通过调用 SQLDescribeParam 来描述动态参数。 | 否 | |
| 不仅使用输入参数,还使用存储过程的输出和输入/输出参数以及结果值。 | 否 | Ignite SQL 不支持输出参数。 |
使用书签,包括检索书签,通过调用SQLDescribeCol和SQLColAttribute在列号 0 上。通过调用SQLFetchScroll将FetchOrientation参数设置为SQL_FETCH_BOOKMARK,支持基于书签进行获取。并通过书签进行更新、删除和获取,方法是调用SQLBulkOperations将Operation参数设置为SQL_UPDATE_BY_BOOKMARK、SQL_DELETE_BY_BOOKMARK或SQL_FETCH_BY_BOOKMARK。 | 否 | Ignite SQL 不支持书签。 |
通过调用SQLColumnPrivileges、SQLForeignKeys和SQLTablePrivileges来检索有关数据字典的高级信息。 | 部分 | 实现了SQLForeignKeys实现,但返回空结果集。 |
使用 ODBC 函数而不是 SQL 语句来执行其他数据库操作:带有SQL_ADD的SQLBulkOperations,或者带有SQL_DELETE或者SQL_UPDATE的SQLSetPos。 | 否 | |
| 为指定的单个语句启用 ODBC 函数的异步执行。 | 否 | |
通过调用SQLSpecialColumns获取表的SQL_ROWVER行标识列。 | 否 | |
将SQL_ATTR_CONCURRENCY语句属性设置为至少一个值,而不是SQL_CONCUR_READ_ONLY。 | 否 | |
登录请求和SQL查询的超时处理能力(SQL_ATTR_LOGIN_TIMEOUT和SQL_ATTR_QUERY_TIMEOUT)。 | 是 | |
更改默认隔离级别的能力,以可序列化的隔离级别执行事务的能力。 | 否 |
5.函数一致性
| 函数 | 支持度 | 一致性级别 |
|---|---|---|
SQLAllocHandle | 是 | 核心 |
SQLBindCol | 是 | 核心 |
SQLBindParameter | 是 | 核心 |
SQLBrowseConnect | 否 | 一级 |
SQLBulkOperations | 否 | 一级 |
SQLCancel | 否 | 核心 |
SQLCloseCursor | 是 | 核心 |
SQLColAttribute | 是 | 核心 |
SQLColumnPrivileges | 否 | 二级 |
SQLColumns | 是 | 核心 |
SQLConnect | 是 | 核心 |
SQLCopyDesc | 否 | 核心 |
SQLDataSources | 不适用 | 核心 |
SQLDescribeCol | 是 | 核心 |
SQLDescribeParam | 否 | 二级 |
SQLDisconnect | 是 | 核心 |
SQLDriverConnect | 是 | 核心 |
SQLDrivers | 不适用 | 核心 |
SQLEndTran | 部分 | 核心 |
SQLExecDirect | 是 | 核心 |
SQLExecute | 是 | 核心 |
SQLFetch | 是 | 核心 |
SQLFetchScroll | 是 | 核心 |
SQLForeignKeys | 部分 | 二级 |
SQLFreeHandle | 是 | 核心 |
SQLFreeStmt | 是 | 核心 |
SQLGetConnectAttr | 部分 | 核心 |
SQLGetCursorName | 否 | 核心 |
SQLGetData | 是 | 核心 |
SQLGetDescField | 否 | 核心 |
SQLGetDescRec | 否 | 核心 |
SQLGetDiagField | 是 | 核心 |
SQLGetDiagRec | 是 | 核心 |
SQLGetEnvAttr | 部分 | 核心 |
SQLGetFunctions | 否 | 核心 |
SQLGetInfo | 是 | 核心 |
SQLGetStmtAttr | 部分 | 核心 |
SQLGetTypeInfo | 是 | 核心 |
SQLMoreResults | 是 | 一级 |
SQLNativeSql | 是 | 核心 |
SQLNumParams | 是 | 核心 |
SQLNumResultCols | 是 | 核心 |
SQLParamData | 是 | 核心 |
SQLPrepare | 是 | 核心 |
SQLPrimaryKeys | 是 | 一级 |
SQLProcedureColumns | 否 | 一级 |
SQLProcedures | 否 | 一级 |
SQLPutData | 是 | 核心 |
SQLRowCount | 是 | 核心 |
SQLSetConnectAttr | 部分 | 核心 |
SQLSetCursorName | 否 | 核心 |
SQLSetDescField | 否 | 核心 |
SQLSetDescRec | 否 | 核心 |
SQLSetEnvAttr | 部分 | 核心 |
SQLSetPos | 否 | 一级 |
SQLSetStmtAttr | 部分 | 核心 |
SQLSpecialColumns | 部分 | 核心 |
SQLStatistics | 否 | 核心 |
SQLTablePrivileges | 否 | 二级 |
SQLTables | 是 | 核心 |
6.环境属性一致性
| 属性 | 支持度 | 一致性级别 |
|---|---|---|
SQL_ATTR_CONNECTION_POOLING | 否 | 可选 |
SQL_ATTR_CP_MATCH | 否 | 可选 |
SQL_ATTR_ODBC_VER | 是 | 核心 |
SQL_ATTR_OUTPUT_NTS | 是 | 可选 |
7.连接属性一致性
| 属性 | 支持度 | 一致性级别 |
|---|---|---|
SQL_ATTR_ACCESS_MODE | 否 | 核心 |
SQL_ATTR_ASYNC_ENABLE | 否 | 一级/二级 |
SQL_ATTR_AUTO_IPD | 否 | 二级 |
SQL_ATTR_AUTOCOMMIT | 是 | 一级 |
SQL_ATTR_CONNECTION_DEAD | 是 | 一级 |
SQL_ATTR_CONNECTION_TIMEOUT | 是 | 二级 |
SQL_ATTR_CURRENT_CATALOG | 否 | 二级 |
SQL_ATTR_LOGIN_TIMEOUT | 是 | 二级 |
SQL_ATTR_ODBC_CURSORS | 否 | 核心 |
SQL_ATTR_PACKET_SIZE | 否 | 二级 |
SQL_ATTR_QUIET_MODE | 否 | 核心 |
SQL_ATTR_TRACE | 否 | 核心 |
SQL_ATTR_TRACEFILE | 否 | 核心 |
SQL_ATTR_TRANSLATE_LIB | 否 | 核心 |
SQL_ATTR_TRANSLATE_OPTION | 否 | 核心 |
SQL_ATTR_TXN_ISOLATION | 否 | 一级/二级 |
8.语句属性一致性
| 属性 | 支持度 | 一致性级别 |
|---|---|---|
SQL_ATTR_APP_PARAM_DESC | 部分 | 核心 |
SQL_ATTR_APP_ROW_DESC | 部分 | 核心 |
SQL_ATTR_ASYNC_ENABLE | 否 | 一级/二级 |
SQL_ATTR_CONCURRENCY | 否 | 一级/二级 |
SQL_ATTR_CURSOR_SCROLLABLE | 否 | 一级 |
SQL_ATTR_CURSOR_SENSITIVITY | 否 | 二级 |
SQL_ATTR_CURSOR_TYPE | 否 | 一级/二级 |
SQL_ATTR_ENABLE_AUTO_IPD | 否 | 二级 |
SQL_ATTR_FETCH_BOOKMARK_PTR | 否 | 二级 |
SQL_ATTR_IMP_PARAM_DESC | 部分 | 核心 |
SQL_ATTR_IMP_ROW_DESC | 部分 | 核心 |
SQL_ATTR_KEYSET_SIZE | 否 | 二级 |
SQL_ATTR_MAX_LENGTH | 否 | 一级 |
SQL_ATTR_MAX_ROWS | 否 | 一级 |
SQL_ATTR_METADATA_ID | 否 | 核心 |
SQL_ATTR_NOSCAN | 否 | 核心 |
SQL_ATTR_PARAM_BIND_OFFSET_PTR | 是 | 核心 |
SQL_ATTR_PARAM_BIND_TYPE | 否 | 核心 |
SQL_ATTR_PARAM_OPERATION_PTR | 否 | 核心 |
SQL_ATTR_PARAM_STATUS_PTR | 是 | 核心 |
SQL_ATTR_PARAMS_PROCESSED_PTR | 是 | 核心 |
SQL_ATTR_PARAMSET_SIZE | 是 | 核心 |
SQL_ATTR_QUERY_TIMEOUT | 是 | 二级 |
SQL_ATTR_RETRIEVE_DATA | 否 | 一级 |
SQL_ATTR_ROW_ARRAY_SIZE | 是 | 核心 |
SQL_ATTR_ROW_BIND_OFFSET_PTR | 是 | 核心 |
SQL_ATTR_ROW_BIND_TYPE | 是 | 核心 |
SQL_ATTR_ROW_NUMBER | 否 | 一级 |
SQL_ATTR_ROW_OPERATION_PTR | 否 | 一级 |
SQL_ATTR_ROW_STATUS_PTR | 是 | 核心 |
SQL_ATTR_ROWS_FETCHED_PTR | 是 | 核心 |
SQL_ATTR_SIMULATE_CURSOR | 否 | 二级 |
SQL_ATTR_USE_BOOKMARKS | 否 | 二级 |
9.描述符头字段一致性
| 字段 | 支持度 | 一致性级别 |
|---|---|---|
SQL_DESC_ALLOC_TYPE | 否 | 核心 |
SQL_DESC_ARRAY_SIZE | 否 | 核心 |
SQL_DESC_ARRAY_STATUS_PTR | 否 | 核心/一级 |
SQL_DESC_BIND_OFFSET_PTR | 否 | 核心 |
SQL_DESC_BIND_TYPE | 否 | 核心 |
SQL_DESC_COUNT | 否 | 核心 |
SQL_DESC_ROWS_PROCESSED_PTR | 否 | 核心 |
10.描述符记录字段一致性
| 字段 | 支持度 | 一致性级别 |
|---|---|---|
SQL_DESC_AUTO_UNIQUE_VALUE | 否 | 二级 |
SQL_DESC_BASE_COLUMN_NAME | 否 | 核心 |
SQL_DESC_BASE_TABLE_NAME | 否 | 一级 |
SQL_DESC_CASE_SENSITIVE | 否 | 核心 |
SQL_DESC_CATALOG_NAME | 否 | 二级 |
SQL_DESC_CONCISE_TYPE | 否 | 核心 |
SQL_DESC_DATA_PTR | 否 | 核心 |
SQL_DESC_DATETIME_INTERVAL_CODE | 否 | 核心 |
SQL_DESC_DATETIME_INTERVAL_PRECISION | 否 | 核心 |
SQL_DESC_DISPLAY_SIZE | 否 | 核心 |
SQL_DESC_FIXED_PREC_SCALE | 否 | 核心 |
SQL_DESC_INDICATOR_PTR | 否 | 核心 |
SQL_DESC_LABEL | 否 | 二级 |
SQL_DESC_LENGTH | 否 | 核心 |
SQL_DESC_LITERAL_PREFIX | 否 | 核心 |
SQL_DESC_LITERAL_SUFFIX | 否 | 核心 |
SQL_DESC_LOCAL_TYPE_NAME | 否 | 核心 |
SQL_DESC_NAME | 否 | 核心 |
SQL_DESC_NULLABLE | 否 | 核心 |
SQL_DESC_OCTET_LENGTH | 否 | 核心 |
SQL_DESC_OCTET_LENGTH_PTR | 否 | 核心 |
SQL_DESC_PARAMETER_TYPE | 否 | 核心/二级 |
SQL_DESC_PRECISION | 否 | 核心 |
SQL_DESC_ROWVER | 否 | 一级 |
SQL_DESC_SCALE | 否 | 核心 |
SQL_DESC_SCHEMA_NAME | 否 | 一级 |
SQL_DESC_SEARCHABLE | 否 | 核心 |
SQL_DESC_TABLE_NAME | 否 | 一级 |
SQL_DESC_TYPE | 否 | 核心 |
SQL_DESC_TYPE_NAME | 否 | 核心 |
SQL_DESC_UNNAMED | 否 | 核心 |
SQL_DESC_UNSIGNED | 否 | 核心 |
SQL_DESC_UPDATABLE | 否 | 核心 |
11.SQL 数据类型
规范中列出的以下 SQL 数据类型是支持的:
| 数据类型 | 支持度 |
|---|---|
SQL_CHAR | 是 |
SQL_VARCHAR | 是 |
SQL_LONGVARCHAR | 是 |
SQL_WCHAR | 否 |
SQL_WVARCHAR | 否 |
SQL_WLONGVARCHAR | 否 |
SQL_DECIMAL | 是 |
SQL_NUMERIC | 否 |
SQL_SMALLINT | 是 |
SQL_INTEGER | 是 |
SQL_REAL | 否 |
SQL_FLOAT | 是 |
SQL_DOUBLE | 是 |
SQL_BIT | 是 |
SQL_TINYINT | 是 |
SQL_BIGINT | 是 |
SQL_BINARY | 是 |
SQL_VARBINARY | 是 |
SQL_LONGVARBINARY | 是 |
SQL_TYPE_DATE | 是 |
SQL_TYPE_TIME | 是 |
SQL_TYPE_TIMESTAMP | 否 |
SQL_TYPE_UTCDATETIME | 否 |
SQL_TYPE_UTCTIME | 否 |
SQL_INTERVAL_MONTH | 否 |
SQL_INTERVAL_YEAR | 否 |
SQL_INTERVAL_YEAR_TO_MONTH | 否 |
SQL_INTERVAL_DAY | 否 |
SQL_INTERVAL_HOUR | 否 |
SQL_INTERVAL_MINUTE | 否 |
SQL_INTERVAL_SECOND | 否 |
SQL_INTERVAL_DAY_TO_HOUR | 否 |
SQL_INTERVAL_DAY_TO_MINUTE | 否 |
SQL_INTERVAL_DAY_TO_SECOND | 否 |
SQL_INTERVAL_HOUR_TO_MINUTE | 否 |
SQL_INTERVAL_HOUR_TO_SECOND | 否 |
SQL_INTERVAL_MINUTE_TO_SECOND | 否 |
SQL_GUID | 是 |
18624049226
