ACILobOpen()

ACILobOpen()

作用:

在指定的模式下打开一个大对象

语法:

sword ACILobOpen ( ACISvcCtx        *svchp,
                   ACIError         *errhp,
                   ACILobLocator    *locp,
                   ub1               mode );

参数:

  • svchp (IN)

服务上下文句柄

  • errhp (IN/OUT)

错误句柄,该接口调用失败时,错误信息会存在该句柄上 ,调用 ACIErrorGet 获得错误信息。

  • locp (IN)

指向需要打开的大对象描述符指针

  • mode (IN)

打开LOB或BFILE的模式。 LOB的有效模式是ACI_LOB_READONLY和ACI_LOB_READWRITE。 请注意,存在ACI_FILE_READONLY作为 ACILobFileOpen 的输入。 如果输入定位符用于BFILE,则ACI_FILE_READONLY可以与 ACILobOpen 一起使用。

说明:

两次打开相同的LOB是错误的。无法在读/写模式下打开BFILE。

如果用户尝试写入以只读模式打开的LOB或BFILE,则会返回错误。

打开一个LOB都往返于服务器。对于内部LOB,打开会触发依赖于open调用的其他代码。对于外部LOB(BFILE),打开需要往返行程,因为正在打开服务器端的实际操作系统文件。

不必打开LOB对其执行操作。使用基于函数的索引,可扩展索引或上下文并进行多次调用以更新或写入LOB时,应首先调用 ACILobOpen ,然后根据需要多次更新LOB,最后调用 ACILobClose 。此操作序列可确保索引在所有写操作结束时仅更新一次,而不是为每个写操作更新一次。

不必将所有LOB操作都包装在open和close调用中。但是,如果您打开一个LOB,则在提交事务之前必须先将其关闭。在关闭由事务打开的所有打开的LOB之前提交事务是错误的。

返回错误后,LOB不再标记为已打开,但是事务已成功提交。因此,将提交对事务中的LOB和非LOB数据所做的所有更改。

如果未将LOB操作包装在打开或关闭API中,则每次写入LOB时都会更新功能索引和域索引。这可能会对性能产生不利影响,因此建议您将对LOB的写操作包含在open或close语句中。