OCI编程高级篇(十一) 其他一些LOB操作函数

访问www.tomcoding.com网站,学习Oracle内部数据结构,详细文档说明,下载Oracle的exp/imp,DUL,logminer,ASM工具的源代码,学习高技术含量的内容。

针对LOB的操作除了写和读函数之外,还有其他一些常用的函数,我们来介绍一下。

1. LOB擦除函数,对一段LOB数据进行擦除,CLOB填充为空格,BLOB填充为0。函数原型和参数如下。

sword OCILobErase2 ( OCISvcCtx *svchp,
    OCIError           *errhp,
    OCILobLocator *locp,
    oraub8              *amount,
    oraub8              offset );

svchp是一个输入参数,OCI服务上下文句柄。

errhp是一个输入/输出参数,错误句柄,返回错误码和错误信息文本。

locp是一个输入/输出参数,LOB定位符,与要擦除的LOB关联。

amount是一个输入/输出参数,要擦除LOB数据的数量,CLOB以字符计算,BLOB以字节计算。

offset是一个输入参数,要擦除数据的起始位置,从1开始计算,CLOB以字符为单位,BLOB以字节为单位。

2. 得到LOB的长度函数,原型和参数如下。

sword OCILobGetLength2 ( OCISvcCtx *svchp,
    OCIError           *errhp,
    OCILobLocator *locp,
    oraub8              *lenp );

svchp是一个输入参数,OCI服务上下文句柄。

errhp是一个输入/输出参数,错误句柄,返回错误码和错误信息文本。

locp是一个输入参数,要获取长度的LOB定位符。

lenp是一个输出参数,返回LOB的长度,CLOB以字符计算,BLOB以字节计算。

3. 判断一个LOB是否打开了,注意这里是判断LOB是否打开,不是定位符是否打开,如果一个定位符先与一个LOB1关联,然后打开,再与一个LOB2关联,也打开,如果后面把定位符关闭了,那么只是关闭了LOB2LOB1仍然是打开的,还是需要把定位符与LOB1关联,然后可以关闭LOB1

sword OCILobIsOpen ( OCISvcCtx *svchp,
    OCIError           *errhp,
    OCILobLocator *locp,
    boolean             *flag );

svchp是一个输入参数,OCI服务上下文句柄。

errhp是一个输入/输出参数,错误句柄,返回错误码和错误信息文本。

locp是一个输入参数,要测试是否打开的LOB定位符。

flag是一个输出参数,如果返回TRUE表示LOB已打开,返回FALSE表示LOB未打开。

4. 截断LOB函数,把LOB数据截断为一个新的长度,只能往短了截。

sword OCILobTrim2 ( OCISvcCtx *svchp,
OCIError           *errhp,
OCILobLocator *locp,
oraub8              newlen );

svchp是一个输入参数,OCI服务上下文句柄。

errhp是一个输入/输出参数,错误句柄,返回错误码和错误信息文本。

locp是一个输入/输出参数,要截断的LOB定位符。

newlen是一个输入参数,LOB的新长度,CLOB以字符计算,BLOB以字节计算。

posted @ 2025-08-14 18:09  汤姆花花  阅读(5)  评论(0)    收藏  举报