返回首页

gbase数据、南大通用产品文档:GBase8s消息链接限制

更新日期:2024年09月11日

即使启用消息传输优化,GBase 8s ODBC 也不会链接 SQL 函数。
ODBC 不链接的 SQL 函数有:

SQLDisconnect

SQLConnect

SQLEndTran

SQLExecute(如果驱动程序使用 select 或调用过程返回结果,并且驱动程序使用
insert 游标指向批量插入)

SQLExtendedFetch

SQLFetch

SQLFetchScroll

SQLPrepare
当驱动程序接触到上表所列的函数时,它执行以下操作:
1.
只有当遇到需要数据库服务器响应的 SQL 语句时,会将消息队列刷新到数据库服
务器。
当驱动程序运行不需要网络流量的函数时,它不会刷新消息队列,例如
SQLAllocStmt。
2.
继续后续 SQL 语句的消息链接。

您使用 DECLARE 语句来声明游标。此语句给游标一个名称,指定它的使用,并将它与语
句相关联。下列示例是用 GBase 8s ESQL/C 编写的:
EXEC SQL DECLARE the_item CURSOR FOR
SELECT order_num, item_num, stock_num
INTO :o_num, :i_num, :s_num
FROM items
FOR READ ONLY;
声明给游标一个名称
(在此示例中为 the_item)
并将它与 SELECT 语句相关联。
(通过 SQL
程序修改数据 讨论还可如何与 INSERT 语句相关联。)
此示例中的 SELECT 语句包含 INTO 子句。INTO 子句指定哪个变量接收数据。您还可
使用 FETCH 语句来指定哪个变量接收数据,如 定位 INTO 子句讨论的那样。
DECLARE 语句不是活动的语句;它仅仅创建游标的特性并为它分配存储。您可使用在前
面示例中声明的游标来通读 items 表一次。可声明向后读和向前读游标(请参阅 游标输入
模式)。由于此游标缺少 FOR UPDATE 子句,且由于指定 FOR READ ONLY,因此,它
仅用于读取数据,不修改它。通过 SQL 程序修改数据 说明如何使用游标来修改数据。

当您关闭 Statement 和 ResultSet 对象时,可以使用环境变
量 OPTOFC 和 IFX_AUTOFREE 减少网络流量。
将 OPTOFC 设置为 1 来指定:如果已在客户端元组缓冲区检索到所有合格的行,
则 ResultSet.close() 方法不需要网络。在检索完所有的行后,数据库服务器自动关闭游标。

在调用下一个 ResultSet.next() 方法之前,
GBase 8s JDBC Driver 在客户端元组缓冲区中可能
有也可能没有附加的行。因此,除非 GBase 8s JDBC Driver 已经从数据库服务器检索到所
有的行,否则当 OPTOFC 设置为 1 时,ResultSet.close() 方法可能仍然需要网络往返。
将 IFX_AUTOFREE 设置为 1 以指定如果数据库服务器中的游标已经关闭,
则 Statement.close() 方法不需要网络往返来释放数据库服务器游标资源。
还可以使用 setAutoFree(boolean flag) 和 getAutoFree() 方法释放数据库服务器游标资源。有
关更多信息,请参阅“自动释放”特性。
当游标关闭后,数据库服务器显式地通过 ResultSet.close()方法或隐式地通过 OPTOFC 环境
变量自动释放游标资源。
当游标资源释放后,该游标不能再被引用。
有关如何使用 OPTOFC 和 IFX_AUTOFREE 环境变量的示例,
请参阅 示例代码文件 中描
述的 autofree.java optofc.java 演示示例。
在这些示例中,
使用 Properties.put() 方法设置变量。
有关 GBase 8s 环境变量的设置的更多信息,请参阅随同 GBase 8s JDBC 驱动程序的
GBase 8s 环境变量。