Skip to content

ODBC标准一致性

1.概述

ODBC 定义了多个接口一致性级别,本章节中会介绍 Ignite ODBC 驱动支持哪些功能。

2.核心接口一致性

特性支持度备注
通过调用SQLAllocHandleSQLFreeHandle来分配和释放所有类型的句柄。
使用SQLFreeStmt函数的所有形式。
通过调用SQLBindCol绑定结果集列。
通过调用SQLBindParameterSQLNumParams,在输入方向上处理动态参数,包括参数数组。
指定绑定偏移量。
使用执行时数据对话框,涉及对SQLParamDataSQLPutData的调用。
通过调用SQLCloseCursorSQLGetCursorNameSQLSetCursorName来管理游标和游标名称。部分实现了SQLCloseCursor,但是Ignite SQL 不支持命名游标。
通过调用SQLColAttributeSQLDescribeColSQLNumResultColsSQLRowCount来访问结果集的描述(元数据)。
通过调用SQLColumnsSQLGetTypeInfoSQLStatisticsSQLTables来查询数据字典。部分SQLStatistics不支持。
通过调用SQLConnectSQLDataSourcesSQLDisconnectSQLDriverConnect来管理数据源和连接,无论支持哪个ODBC级别,支持通过调用SQLDrivers获取有关驱动的信息。部分DSN支持还未实现。
通过调用SQLExecDirectSQLExecuteSQLPrepare来准备和执行 SQL 语句。SQL端不支持SQLPrepare
通过调用SQLFetchSQLFetchScroll,并将FetchOrientation参数设置为SQL_FETCH_NEXT,仅在正向方向上获取结果集中的一行或多行
通过调用SQLGetData来获取未绑定的列。
通过调用SQLGetConnectAttrSQLGetEnvAttrSQLGetStmtAttr获取所有属性的当前值,并通过调用SQLSetConnectAttrSQLSetEnvAttrSQLSetSmtAttr将所有属性设置为默认值,将某些属性设置为非默认值。部分并不支持所有的属性,具体见下面的表格。
通过调用SQLCopyDescSQLGetDescFieldSQLGetDescRecSQLSetDescFieldSQLSetDescRec来操作描述符的某些字段。
通过调用SQLGetDiagFieldSQLGetDiagRec获取诊断信息。
通过调用SQLGetFunctionsSQLGetInfo来检测驱动功能,并在发送到数据源之前通过调用SQLNativeSql来检测对 SQL 语句所做的任何文本替换的结果。
使用SQLEndTran的语法提交事务。核心级驱动不需要支持真实事务,因此,应用程序无法为SQL_ATTR_AUTOCOMMIT连接属性指定SQL_ROLLBACKSQL_AUTOCOMMIT_OFF
调用SQLCancel以取消执行时数据对话框,在多线程环境中,还可以取消在另一个线程中执行的ODBC函数。核心级接口一致性并不要求支持异步执行函数,也不要求使用SQLCancel取消异步执行的ODBC函数。平台和ODBC驱动都不需要多线程来同时执行独立的活动,但是ODBC驱动必须是线程安全的。对来自应用程序的请求进行序列化是实现此规范的一种符合要求的方法,尽管它可能会造成严重的性能问题。
通过调用SQLSpecialColumns获取表的行标识符列SQL_BEST_ROWID行。部分当前的实现仅返回一个空行集。

3.一级接口一致性

特性支持度备注
指定数据库表和视图的架构(使用两部分命名)。
调用 ODBC 函数的真正异步执行,如果适用,ODBC 函数在给定连接上都是同步的或全部异步的。
使用可滚动游标,通过调用使用FetchOrientation参数的SQLFetchScroll,而不是SQL_FETCH_NEXT,使得访问结果集时不仅仅是向前滚动。
通过调用SQLPrimaryKeys,获得表的主键。
使用存储过程,通过 ODBC 转义序列进行过程调用,并通过调用SQLProcedureColumnsSQLProcedures查询有关存储过程的数据字典。
通过调用SQLBrowseConnect以交互方式浏览可用服务端来连接到数据源。
使用 ODBC 函数而不是 SQL 语句来执行特定的数据库操作:带有SQL_POSITIONSQL_REFRESHSQLSetPos
通过调用SQLMoreResults,可以访问由批处理和存储过程生成的多个结果集的内容。
分隔跨越多个 ODBC 函数的事务,具有真正的原子性,并能够在SQLEndTran中指定SQL_ROLLBACK

4.二级接口一致性

特性支持度备注
使用数据库表和视图的三部分名称。Ignite SQL 不支持目录。
通过调用 SQLDescribeParam 来描述动态参数。
不仅使用输入参数,还使用存储过程的输出和输入/输出参数以及结果值。Ignite SQL 不支持输出参数。
使用书签,包括检索书签,通过调用SQLDescribeColSQLColAttribute在列号 0 上。通过调用SQLFetchScrollFetchOrientation参数设置为SQL_FETCH_BOOKMARK,支持基于书签进行获取。并通过书签进行更新、删除和获取,方法是调用SQLBulkOperationsOperation参数设置为SQL_UPDATE_BY_BOOKMARKSQL_DELETE_BY_BOOKMARKSQL_FETCH_BY_BOOKMARKIgnite SQL 不支持书签。
通过调用SQLColumnPrivilegesSQLForeignKeysSQLTablePrivileges来检索有关数据字典的高级信息。部分实现了SQLForeignKeys实现,但返回空结果集。
使用 ODBC 函数而不是 SQL 语句来执行其他数据库操作:带有SQL_ADDSQLBulkOperations,或者带有SQL_DELETE或者SQL_UPDATESQLSetPos
为指定的单个语句启用 ODBC 函数的异步执行。
通过调用SQLSpecialColumns获取表的SQL_ROWVER行标识列。
SQL_ATTR_CONCURRENCY语句属性设置为至少一个值,而不是SQL_CONCUR_READ_ONLY
登录请求和SQL查询的超时处理能力(SQL_ATTR_LOGIN_TIMEOUTSQL_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