针对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关联,也打开,如果后面把定位符关闭了,那么只是关闭了LOB2,LOB1仍然是打开的,还是需要把定位符与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以字节计算。