ACILobCopy()

ACILobCopy()

作用:

将全部或部分LOB值复制到另一个LOB值。 不推荐使用此功能。 使用 ACILobCopy2

语法:

sword ACILobCopy ( ACISvcCtx        *svchp,
                   ACIError         *errhp,
                   ACILobLocator    *dst_locp,
                   ACILobLocator    *src_locp,
                   ub4               amount,
                   ub4               dst_offset,
                   ub4               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的写操作。