返回首页

gbase数据、南大通用产品文档:GBase8s定义和使用变量

更新日期:2024年09月11日

您必须在例程体中定义在 SPL 例程中使用的任何变量,
而不是在例程的参数列表中隐式地
定义的变量。
在内存中保持变量的值;该变量不是数据库对象。因此,回滚事务不恢复 SPL 变量的值。


GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司 - 269 -

要在 SPL 例程中定义变量,
请使用 DEFINE 语句。
DEFINE 不是可执行语句。
DEFINE 必
须出现在 CREATE PROCEDURE 语句之后且任何其他语句之前。下图中的示例是所有合
法的变量定义。
图: 变量定义。
DEFINE a INT;
DEFINE person person_t;
DEFINE GLOBAL gl_out INT DEFAULT 13;
要获取关于 DEFINE 的更多信息,请参阅《GBase 8s SQL 指南:语法》 中的描述。
SPL 变量有名称和数据类型。变量名称必须是有效的标识符,如 GBase 8s SQL 指南:语
法 中“标识符”段中描述的那样。

取值0,1,2。默认取0。
0 表示使用原有方式创建镜像,同时跨VC 同步主备分片。
1 表示先跨VC 同步主分片,再VC 内同步备分片。
2 表示只跨VC 同步主分片,备分片记录FEVENTLOG。

ifx_lo_writewithseek() 函数执行搜寻操作,然后将指定字节数的数据写到打开的
智能大对象。

语法
mint ifx_lo_writewithseek(LO_fd, buf, nbytes, offset, whence, error)
mint LO_fd;
char *buf;
mint nbytes;

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 809 -
ifx_int8_t *offset;
mint whence;
mint *error;
LO_fd
表示要写到其的智能大对象的 LO 文件描述符。
buf
指向包含函数写到智能大对象的数据的缓冲区的指针。
nbytes
要写到智能大对象的字节数。此值不可超过 2 GB。
offset
指向从其起始的搜寻位置的 8 字节整数(INT8)偏移量的指针。
whence
标识起始的搜寻位置的 mint 值。
error
指向包含 ifx_lo_writewithseek() 设置的错误代码的 mint 的指针。

用法
ifx_lo_writewithseek() 函数将 nbytes 的数据写到 LO_fd 文件描述符标识的智能大对
象。该函数从 buf 指向的用户定义的缓冲区取得要写的数据。该缓冲区的大小必须小于 2
GB。

在 offset 和 whence 参数指示的 LO_fd 的搜寻位置开始写,如下:
whence 参数标识从其开始搜寻的位置。

有效的值包括下列 locator.h 头文件定义的常量。
Whence 常量
起始的搜寻位置。
LO_SEEK_SET
智能大对象的起始
LO_SEEK_CUR
智能大对象中的当前搜寻位置
LO_SEEK_END

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 810 -
智能大对象的末尾
offset 参数标识以字节计的偏移量,从(whence 参数指定的)起始的搜寻位置,至应
设置的搜寻位置。

如果数据库服务器将少于 nbytes 的数据写到智能大对象,则 ifx_lo_writewithseek()
函数返回它写了的字节数,并设置 error 值来指向表示未完成的写操作的原因的值。当
sbspace 用尽空间时,可发生此情况。

返回代码
>=0
该函数已从 buf 字符缓冲区写到智能大对象的字节数。
-1
函数不成功;要获取详尽的错误代码,请检测 error。