ACILobCopy2()¶
-
ACILobCopy2()¶
作用:
将全部或部分LOB值复制到另一个LOB值。 此功能必须用于大小大于4 GB的LOB。 您还可以对小于4 GB的LOB使用此功能。
语法:
sword ACILobCopy2 ( ACISvcCtx *svchp,
ACIError *errhp,
ACILobLocator *dst_locp,
ACILobLocator *src_locp,
aciub8 amount,
aciub8 dst_offset,
aciub8 src_offset );
参数:
- svchp (IN)
服务上下文句柄
- errhp (IN/OUT)
错误句柄,该接口调用失败时,错误信息会存在该句柄上 ,调用 ACIErrorGet 获得错误信息。
- dst_locp (IN/OUT)
一个单独的目标大对象的内部大对象描述符指针,这个描述符指针必须是通过svchp句柄从服务器获得的。
- src_locp (IN)
一个单独的源大对象的内部大对象描述符指针,这个描述符指针必须是通过svchp句柄已经从服务器获得的。
- amount (IN)
从源LOB复制到目标LOB的CLOB的字符数或BLOB的字节数。 该参数接受的最大值是UB8MAXVAL(18446744073709551615)。 指定UB8MAXVAL还表示将使用指定的源偏移量和目标偏移量将整个源LOB复制到目标LOB。
- dst_offset (IN)
这是目标LOB的绝对偏移量。 对于字符LOB,它是从LOB开头开始写入的字符数。 对于二进制LOB,它是从LOB开头开始写入的字节数。 偏移量从1开始。
- src_offset (IN)
这是源LOB的绝对偏移量。 对于字符LOB,它是从LOB开头开始的字符数。 对于二进制LOB,它是字节数。 从1开始。
说明:
按指定将内部LOB值的全部或一部分复制到另一个内部LOB中。数据从源复制到目标。源(src_locp)和目标(dst_locp)LOB必须存在。
如果数据存在于目的地的起始位置,则会被源数据覆盖。如果目标的起始位置超出了当前数据的末尾,则从当前数据的末尾到新写入的数据的开头,将零字节填充符(对于BLOB)或空格(对于CLOB)写入目标LOB。如果超出了目标LOB的当前长度,则将其扩展以容纳新写入的数据。将目标LOB扩展到允许的最大长度(即4 GB)以上或尝试从NULL LOB复制是错误的。将 ACILobCopy2 用于大小大于4 GB的LOB。
源LOB定位符和目标LOB定位符都必须是同一类型(也就是说,它们都必须是BLOB或都必须是CLOB)。不得为任何一个定位器启用LOB缓冲。
此函数不接受BFILE定位器作为源或目标。
您不必将此LOB操作包装在open或close调用中。 如果在执行此操作之前未打开LOB,此操作会隐式打开,完成操作后再关闭。但是,如果您确实在执行此操作之前打开了LOB,则必须在提交或回滚事务之前将其关闭。
如果未将LOB操作包装在打开或关闭API中,则每次写入LOB时都会自动打开和关闭。 这会对性能产生不利影响。建议您在open或close语句中包含对LOB的写操作。