返回首页

gbase数据、南大通用产品文档:GBase8s一起使用 OPTOFC 与 延迟的 PREPARE

更新日期:2024年09月11日

要获得在客户机应用程序与数据库服务器之间消息的最优数目,请一起使用“优化
OPEN、FETCH、CLOSE”特性与“延迟的 PREPARE”特性。

然而,当您一起使用这两种优化特性时,请记住下列要求:
如果在语句文本中存在语法错误,
直到数据库服务器执行 FETCH,
它才返回该错误。
GBase 8s ESQL/C 不将 PREPARE、DECLARE 和 OPEN 语句发送至数据库服务器,
直到它执行 FETCH 语句为止。因此,直到数据库服务器执行 FETCH 语句,才能得到任
何这些语句生成的任何错误。

您必须使用 GET DESCRIPTOR 语句的特殊情况来获得准备好的语句的 DESCRIBE
信息。
DESCRIBE 语句的典型使用,是在 PREPARE 确定关于该准备好的语句的信息之后
执行它。
然而,
随同同时启用的 OPTOFC 和“延迟的 PREPARE”特性,
GBase 8s ESQL/C 不
将 DESCRIBE 语句发送至数据库,直到它达到 FETCH 语句为止。要允许您获取关于准
备好的语句的信息,GBase 8s ESQL/C 执行类似于 SET DESCRIPTOR 语句的语句来获得

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 446 -
准备好的语句的数据类型、长度和其他系统描述符字段。然后,您可在 FETCH 之后使用
GET DESCRIPTOR 语句来获取此信息。

而且,
当数据类型为内建的数据类型时,
GBase 8s ESQL/C 仅可在 GET DESCRIPTOR
语句中的主变量上执行数据转换。对于 opaque 数据类型和复合的数据类型(集合和 row
类型),数据库服务器总是以其原本的格式将数据返回至客户机应用程序。然后,您可在
GET DESCRIPTOR 语句之后对此数据执行数据转换。

例如,数据库服务器以其内部的(二进制)格式从 opaque 类型列返回数据。因此,
您的 GBase 8s ESQL/C 程序必须将列数据放置到 var binary
(或 fixed binary)
主变量内,
当它执行 GET DESCRIPTOR 语句时。
var binary 和 fixed binary 数据类型以其内部的格
式保存 opaque 类型数据。您不可使用 lvarchar 主变量来保存该数据,因为 GBase 8s
ESQL/C 不可将 opaque 类型数据从其内部的(它从数据库服务器收到的)格式转换为其
外部的(lvarchar)格式。

当同时启用“延迟的 PREPARE”与 OPTOFC 特性时,FetArrSize 特性不奏效。当启
用这两个特性时,直到 FETCH 完成之后,GBase 8s ESQL/C 才知道行的大小。到此时,
要以 FetArrSize 值来调整访存缓冲区为时已晚。

提示:
要获得最大的优化,
请一起使用 OPTOFC、
“延迟的 PREPARE”与 AUTOFREE
特性。

17:51:39
all

分布式事务遵循两阶段落实协议。某些操作的发生独立于两阶段落实协议,就导致事务不
一致地实现。(请参阅独立操作。)在这些情况中,可能需要从事务进行手动恢复。