返回首页

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

更新日期:2024年09月11日

即使启用消息传输优化,GBase 8s ODBC 也不会链接 SQL 函数。
ODBC 不链接的 SQL 函数有:
l
SQLDisconnect
l
SQLConnect
l
SQLEndTran
l
SQLExecute(如果驱动程序使用 select 或调用过程返回结果,并且驱动程序使用
insert 游标指向批量插入)
l
SQLExtendedFetch
l
SQLFetch
l
SQLFetchScroll
l
SQLPrepare
当驱动程序接触到上表所列的函数时,它执行以下操作:
1.
只有当遇到需要数据库服务器响应的 SQL 语句时,会将消息队列刷新到数据库服
务器。
当驱动程序运行不需要网络流量的函数时,它不会刷新消息队列,例如
SQLAllocStmt。
2.
继续后续 SQL 语句的消息链接。

使用 CREATE PROCEDURE FROM 语句存取用户定义的过程。CREATE
PROCEDURE 语句的实际文本驻留在单独的文件中。
该语句是 SQL ANSI/ISO 标准的扩展。您可以在 GBase 8s ESQL/C 中使用此语
句。
语法

元素
描述
限制
语法
file
包含 CREATE PROCEDURE
语句的全文本的文件的路
径名和文件名。缺省路径
名为当前目录。
必须存在,并且仅可包含一
个 CREATE PROCEDURE 语
句。另见 持有文件的缺省目

特定于
操作系

file_var 包含文件规范的程序变量
的名称
必须是字符数据类型;其内
容有与 file 相同的限制
特定于
语言
用法

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 318
不能直接在 GBase 8s ESQL/C 程序中创建用户定义的过程。这就是说,程序不能
包含 CREATE PROCEDURE 语句。
要在 ESQL/C 程序中使用用户定义的过程:
1. 用 CREATE PROCEDURE 语句创建源文件。
2. 使用 CREATE PROCEDURE FROM 语句来将此源文件的内容发送到数据
库服务器用于执行。
文件仅能包含一个 CREATE PROCEDURE 语句。
例如,假设以下 CREATE PROCEDURE 语句是在称为 raise_pr.sql 的单独文
件中:
CREATE PROCEDURE raise_prices( per_cent INT )
UPDATE stock -- increase by percentage;
SET unit_price = unit_price +
( unit_price * (per_cent / 100) );
END PROCEDURE;
在 GBase 8s ESQL/C 程序中,您可以使用以下 CREATE PROCEDURE FROM 语
句存取 raise_prices( ) SPL 过程:
EXEC SQL create procedure from 'raise_pr.sql';
如果您不确定文件中的 UDR 是否返回值,请使用 CREATE ROUTINE FROM 语
句。
当 IFX_EXTEND_ROLE 配置参数设置成 ON 时,只有拥有内置 EXTEND 角色
的用户才可以创建外部例程。
当 IFX_EXTEND_ROLE 配置参数设置成 1 或 ON 时,只有由数据库服务器管
理员(DBSA)授予内置 EXTEND 角色的用户才能创建外部例程。此外,您对要
注册例程所在的数据库必须至少持有的 Resource 存取权限。还必须对编写例程所
使用的程序语言拥有 Usage 权限。(有关使用 C 语言将 Usage 特权授予用户或
角色的语法,请参阅 语言级权限 。)
用户定义过程,类似用户定义函数,使用创建时有效的对照顺序。请参阅 SET
COLLATION 语句 获取关于使用非缺省对照的信息。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 319
持有文件的缺省目录
数据库服务器将此指定的文件名(以及任何路径名)看作相关的。
在 UNIX™ 上,如果您指定一个简单文件名而不是完整的路径名作为 file 参
数,则客户机应用程序在数据库驻留的计算机上的主目录中寻找文件,如果您在
此计算机上没有主目录,则缺省目录为根目录。
在 Windows™ 上,如果您指定文件名而非目录名为 file 参数,则客户端应用程
序在您的当前工作目录中寻找文件(如果数据库在本地计算机上)。否则,缺省
目录为 %GBASEDBTDIR%\bin 。
重要: GBase 8s ESQL/C 预处理器不处理您指定的文件的内容。它只将内容发送
到数据库服务器用于执行。因此对您在 CREATE PROCEDURE FROM 中指定的文件是
否实际包含 CREATE PROCEDURE 语句没有语法检查。然而,要提高代码的可读
性,建议匹配这两个语句。

ifx_lo_specset_extsz() 函数为智能大对象设置分配 extent 大小。

语法
mint ifx_lo_specset_extsz(LO_spec, extsz)
ifx_lo_create_spec_t *LO_spec;
mint extsz;
LO_spec
指向将 extent 大小保存在其中的 LO-specification 结构的指针。
extsz
代表智能大对象的分配 extent 的大小的整数值。

用法
当数据库服务器写超出当前 extent 的末尾时,extsz 值指定要为智能大
对象分配的分配 extent 的大小。对于 extent 要为多大,该值覆盖 GBase 8s
生成的估计。要获取关于分配 extent 的更多信息,请参阅 表 1。

当您创建智能大对象时,如果未指定 extsz 值,则 GBase 8s 尝试基于对该智能大对
象的过去的操作,以及从存储特征的继承层级取得的其他存储特征(诸如最大字节),来
优化该 extent 大小。

请不要更改此系统值,
除非您知道该智能大对象的分配 extent 大小。
仅遇到严重的存
储分片的应用程序应总是设置分配 extent 大小。对于这样的应用程序,请确保您知道该智
能大对象要扩展的确切字节数。

返回代码
0
函数成功。
-1
函数不成功。