#OCILobRead2
# 功能简介
OCILobRead2函数用于将LOB读入缓冲区。
# 函数声明
sword OCILobRead2 ( OCISvcCtx *svchp,
OCIError *errhp,
OCILobLocator *locp,
oraub8 *byte_amtp,
oraub8 *char_amtp,
oraub8 offset,
void *bufp,
oraub8 bufl,
ub1 piece,
void *ctxp,
OCICallbackLobRead2 (cbfp)
( void *ctxp,
const void *bufp,
oraub8 lenp,
ub1 piecep
void **changed_bufpp,
oraub8 *changed_lenp
)
ub2 csid,
ub1 csfrm );
# 参数说明
参数名 | 说明 |
---|---|
svchp (IN/OUT) | 服务上下文句柄。 |
errhp (IN/OUT) | 一个错误句柄,当出现错误时可以获取诊断信息。 |
locp (IN) | 唯一引用LOB的LOB定位器。 |
byte_amtp (IN/OUT) | 作为入参,表示从数据库读取的字节数,始终用于BLOB,对于CLOB和NCLOB,只有char_amtp为零时才会使用。 作为出参:表示读入用户缓冲区的字节数。 |
char_amtp (IN/OUT) | 作为入参,表示要读入用户缓冲区的最大字符数。 作为出参:表示读入用户缓冲区的字符数。 指向BLOB时,该参数始终不生效。 |
offset (IN) | LOB值开始的绝对偏移量。 如果指向BLOB,表示字节数。 如果指向CLOB或NCLOB,表示字符数。 |
bufp (IN/OUT) | 数据缓冲区,分配的内存的长度假定为bufl。 |
bufl (IN) | 缓冲区的长度。 |
piece (IN) | 不进行轮询,调用传递OCI_ONE_PIECE。 要进行轮询,请在第一次调用时传递OCI_FIRST_PIECE,并在随后的调用中传递OCI_NEXT_PIECE。 使用回调时应传递OCI_FIRST_PIECE。 |
ctxp (IN) | 回调函数的上下文指针。 |
cbfp (IN) | 回调函数。 |
ctxp (IN) | 回调函数的上下文。 |
bufp (IN/OUT) | 数据缓冲区。 |
lenp (IN) | 缓冲区中当前片段的长度(单位:B)。 |
piecep (IN) | 取值范围:OCI_FIRST_PIECE、OCI_NEXT_PIECE或OCI_LAST_PIECE。 |
changed_bufpp (OUT) | 设置为输入新缓冲区的地址时,表示回调函数使用新缓冲区来读取下一块数据。 设置为NULL时,表示使用默认的旧缓冲区bufp。 |
changed_lenp (OUT) | 新缓冲区的长度。 |
csid (IN) | 缓冲区数据的字符集ID。 |
csfrm (IN) | 缓冲区数据的字符集形式。 非0值取值范围:SQLCS_IMPLICIT表示数据库字符集ID,SQLCS_NCHAR表示NCHAR字符集ID。 如果未指定csfrm,则使用默认值SQLCS_IMPLICIT。 |
部分参数目前仅支持以下取值:
参数 | 有效值 |
---|---|
offset | 最小值1,最大值logLength+1 |
piece | OCI_ONE_PIECE OCI_FIRST_PIECE |
csid | 0 与当前客户端环境一致的字符集ID。 |
csfrm | SQLCS_IMPLICIT SQLCS_NCHAR |