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语句中。