返回首页

gbase数据、南大通用产品文档:GBase8s延迟执行 SQL PREPARE 语句

更新日期:2024年09月11日

可以通过启用 deferred-PREPARE 功能来延迟 SQLPrepare 语句的执行。
此功能适用于应用程序执行一系列的 SQLPrepare 和 SQLExecute 语句的动态 SQL 语句。
它通过在应用程序对该语句调用 SQLExecute 之前不向数据库服务器发送 SQLPrepare语
句的方式来优化到数据库服务器的往返消息的数量。
当启用 deferred-PREPARE 后,应用程序执行以下行为:
 执行 SQLPrepare 不会将语句置于准备好的状态。
 在执行语句之前,SQLPrepare 语句中的语法错误是未知的,因为该 SQL 语句在执
行之前不会发送到数据库服务器。如果打开 open-fetch-close 优化功能,则直到第一
次访存之前错误不会返回到客户端,因为 open-fetch-close 优化了 OPEN/FETCH,
所以在第一次访存时发送 OPEN。
 如果应用程序在调用 SQLPrepare 之后,SQLExecute 之前调用 SQLColAttributes 、
SQLDescribeCol、SQLNumResultCols 和 SQLNumParams,则始终返回 HY010(函
数序列错误)。
 如果源描述符句柄在 SQLPrepare 之后,但在应用程序执行 SQLExecute之前调用,
则 SQLCopyDesc 返回 HY010。
 如果描述符句柄是一个 IRD,
并且应用程序在 SQLPrepare 之后 SQLExecute之前调
用,则 SQLGetDescField 和 SQLGetDescRec 返回 HY010。
可以使用以下方式启用 ODBC 应用程序的 deferred-PREPARE 功能:
 使用 SQLSetConnectAttr 设置 SQL_INFX_ATTR_DEFERRED_PREPARE 属性。

GBase 8s ODBC Driver 程序员指南
南大通用数据技术股份有限公司
- 191 -
 当使用 SQLSetConnectAttr启用该属性时,所有为此连接新分配的语句都会继承该属
性值。
更改该属性的唯一方法是设置每一条语句并将它重新设置为语句的属性。
连接
属性缺省为 DISABLED 。
 使用 SQLSetStmtAttr 设置 SQL_INFX_ATTR_AUTO_FREE 属性。
当使用 SQLSetConnectAttr 进行设置 SQL_INFX_ATTR_DEFERRED_PREPARE 属性时,
可以在 C2 和 C5 之间(包括两者)的任何连接状态中进行设置
SQL_INFX_ATTR_DEFERRED_PREPARE 属性。
而只有当语句处于 S1 (分配)
状态时,
才能使用 SQLSetStmtAttr 设置此属性。可以通过使用 SQLGetConnectAttr 或
SQLSetStmtAttr 检索 SQL_INFX_ATTR_DEFERRED_PREPARE 属性的值。

这些主题介绍如何使用 GBase 8s ESQL/C 应用程序链接静态的、共享的以及线程安
全的 GBase 8s 通用库。
GBase 8s 产品使用 GBase 8s 通用库来进行客户端 SQL 应用程序接口(API)产品
(GBase 8s ESQL/C 和 GBase 8s ESQL/COBOL)以及数据库服务器。可以在以下类型的
GBase 8s 通用库中选择链接到您的 GBase 8s ESQL/C 应用程序的库:
静态 GBase 8s 通用库
要链接静态库,链接器将函数复制到您的 GBase 8s ESQL/C 程序的可执行文件中。
静态 GBase 8s 通用库允许不支持共享的计算机上的 GBase 8s ESQL/C 程序访问 GBase
8s 通用库函数。
共享 GBase 8s 通用库
要链接共享库,链接器将有关库的位置复制到您的 GBase 8s ESQL/C 程序的可执行
文件中。共享 GBase 8s 库允许多个应用程序共享这些库的单个副本,操作系统将一次加
载到共享内存中。
静态和共享 GBase 8s 通用库的线程安全版
线程安全版本的 GBase 8s 通用库允许具有多个线程的 GBase 8s ESQL/C 应用程序
同时调用这些库函数。线程安全版本的 GBase 8s 库可用作静态库和共享库。
从 GBase 8s Client Software Development Kit 3.0 版本开始, GBase 8s 通用库的静态
版本在 Windows™ 和 UNIX™ 操作系统上都可用。下表显示了可用的选项。
表 1. 可用于 UNIX ™和 Windows 的不同版本的 ESQL/C 通用库
链接选项
线程安全
缺省
静态
静态、线程安全通用库
静态,缺省通用库
共享
共享、线程安全通用库
共享,缺省通用库

ALTER TABLE...ADD FULLTEXT INDEX 语句建立全文索引
语法格式
建表后通过修改表定义的方法指明哪一列需要建立全文索引。
ALTER TABLE table_name ADD FULLTEXT [INDEX]
index_name(column_name) [INDEX_DATA_PATH='path']
表5- 36 参数说明
参数名称


index_name
索引名(索引名表级唯一,索引名将不区分大小写)。
table_name
表名。
column_name
索引列列名,支持CHAR、VARCHAR 或TEXT 类型。
INDEX_DATA_PATH
可选项,设置索引数据路径标志。如不填写,则索引数据保
存在默认路径上。
path
索引数据存放路径,此路径应为实际已存在的路径。
注意
执行用户需要对path 指定的存放索引数据的目录具有读写权限。
示例
示例1:修改表定义在MB_Text 列建立全文索引。
gbase>
DROP TABLE IF EXISTS sms;
Query OK, 0 rows affected
gbase> CREATE TABLE sms (MB_No char(11),MB_Text varchar(1000) DEFAULT
NULL);
Query OK, 0 rows affected
gbase> ALTER TABLE sms add fulltext index idx_t (MB_Text)
INDEX_DATA_PATH='/home/fti/';
Query OK, 0 rows affected
Records: 0
Duplicates: 0
Warnings: 0