#LOB函数

# OCILobGetLength()

该函数用于获取LOB的长度。

# OCI函数原型

sword OCILobGetLength ( OCISvcCtx      *svchp,
                        OCIError       *errhp,
                        OCILobLocator  *locp,
                        ub4            *lenp );

# 参数说明

参数名 含义
svchp (IN) 服务上下文句柄
errhp (IN/OUT) 一个错误句柄,当出现错误时可以获取诊断信息
locp (IN) 唯一引用LOB的LOB定位器
lenp (OUT) 在输出时,如果LOB不为NULL,则为LOB的长度

# 规格

无。

# 其他说明

无。

# OCILobRead()

该函数用于调用指定的LOB的一部分读入缓冲区。

# OCI函数原型

sword OCILobRead ( OCISvcCtx          *svchp,
                   OCIError           *errhp,
                   OCILobLocator      *locp,
                   ub4                *amtp,
                   ub4                 offset,
                   void               *bufp,
                   ub4                 bufl,
                   void               *ctxp, 
                   OCICallbackLobRead (cbfp)
                                      ( void          *ctxp,
                                        const void    *bufp,
                                        ub4            len,
                                        ub1            piece 
                                      )
                   ub2                 csid,
                   ub1                 csfrm );

# 参数说明

参数名 含义
svchp (IN/OUT) 服务上下文句柄
errhp (IN/OUT) 一个错误句柄,当出现错误时可以获取诊断信息
locp (IN) 唯一引用LOB的LOB定位器。此定位器必须是从svchp指定的服务器获取的定位器
amtp (IN/OUT) 以字节或字符为单位的数量
offset (IN) 在输入时,这是从LOB值开始的绝对偏移量。对于字符LOB(“CLOB”、“NCLOB”),它是从LOB开始的字符数,对于二进制LOB,它是字节数
bufp (IN/OUT) 指向一个缓冲区的指针,在该缓冲区中读取数据。所分配的内存的长度假定为bufl
bufl (IN) 缓冲区的长度
ctxp (IN) 回调函数的上下文指针
cbfp (IN) 回调函数
ctxp (IN) 回调函数的上下文
bufp (IN/OUT) 缓冲区指针
len (IN) bufp中当前片段的长度(以字节为单位)
piece (IN) OCI_FIRST_PIECE, OCI_NEXT_PIECE, 或 OCI_LAST_PIECE
csid (IN) 缓冲区数据的字符集ID
csfrm (IN) 缓冲区数据的字符集形式

# 规格

该函数支持如下的调用方式:

参数 有效值
ctxp NULL
cbfp NULL
csid 0
csfrm SQLCS_IMPLICIT

# 其他说明

无特殊说明。

# OCILobWrite()

将缓冲区写入LOB。

# OCI函数原型

sword OCILobWrite ( OCISvcCtx       *svchp,
                    OCIError        *errhp,
                    OCILobLocator   *locp,
                    ub4             *amtp,
                    ub4              offset,
                    void            *bufp, 
                    ub4              buflen,
                    ub1              piece,
                    void            *ctxp, 
                    OCICallbackLobWrite      (cbfp)
                                    (
                                      void     *ctxp,
                                      void     *bufp,
                                      ub4      *lenp,
                                      ub1      *piecep
                                    ) 
                    ub2              csid,
                    ub1              csfrm );

# 参数说明

参数名 含义
svchp (IN/OUT) 服务上下文句柄
errhp (IN/OUT) 一个错误句柄,当出现错误时可以获取诊断信息
locp (IN/OUT) 唯一引用LOB的内部LOB定位器。此定位器必须是从svchp指定的服务器获取的定位器。
amtp (IN/OUT) 以字节或字符为单位的数量
offset (IN) 在输入时,这是从LOB值开始的绝对偏移量。对于字符LOB(“CLOB”、“NCLOB”),它是从LOB开始的字符数,对于二进制LOB,它是字节数。
bufp (IN) 指向写入工件的缓冲区的指针
buflen (IN) 缓冲区中数据的长度(以字节为单位)
piece (IN) 正在写入缓冲区的哪一部分
ctxp (IN) 回调函数的上下文指针
cbfp (IN) 一个回调函数,可以注册为在分段写入中为每个片段调用
ctxp (IN) 回调函数的上下文
bufp (IN/OUT) 缓冲区指针
lenp (IN/OUT) 缓冲区(in)中数据的长度(以字节为单位),以及bufp中当前片段的长度(以字节为单位)
piecep (OUT) OCI_NEXT_PIECE, 或 OCI_LAST_PIECE
csid (IN) 缓冲区数据的字符集ID
csfrm (IN) 缓冲区数据的字符集形式

# 规格

该函数支持如下的调用方式:

参数 有效值
piecep OCI_ONE_PIECE
ctxp NULL
cbfp NULL
csid 0
csfrm SQLCS_IMPLICIT

# 其他说明

无特殊说明。

# OCILobIsEqual()

比较两个LOB是否相等。

# OCI函数原型

sword OCILobIsEqual ( OCIEnv                  *envhp,
                      const OCILobLocator     *x,
                      const OCILobLocator     *y,
                      boolean                 *is_equal );

# 参数说明

参数名 含义
envhp (IN) 环境句柄
x (IN) 唯一引用LOB的内部LOB定位器。此定位器必须是从svchp指定的服务器获取的定位器。
y (IN) 唯一引用LOB的内部LOB定位器。此定位器必须是从svchp指定的服务器获取的定位器。
is_equal (OUT) 如果两个LOB相等返回TRUE,否则返回FALSE。

# 规格

无。

# 其他说明

无特殊说明。

# OCILobCharSetForm()

获取LOB的字符集形式。

# OCI函数原型

sword OCILobCharSetForm ( OCIEnv                *envhp, 
                          OCIError              *errhp, 
                          const OCILobLocator   *locp, 
                          ub1                   *csfrm );

# 参数说明

参数名 含义
envhp (IN/OUT) 环境句柄
errhp (IN/OUT) 一个错误句柄,当出现错误时可以获取诊断信息
locp (IN) 唯一引用LOB的内部LOB定位器。此定位器必须是从svchp指定的服务器获取的定位器。
csfrm (OUT) 输出LOB的字符集形式。如果输入LOB类型是BLOB,csfrm则返回0,因为二进制BLOB没有字符集的概念。csfrm不能为NULL。csfrm 有两个可能的非零返回值:SQLCS_IMPLICIT - 数据库字符集ID,默认值;SQLCS_NCHAR - NCHAR字符集ID。

# 规格

无。

# 其他说明

无特殊说明。

# OCILobCharSetId()

获取LOB的字符集ID。

# OCI函数原型

sword OCILobCharSetId ( OCIEnv                  *envhp, 
                        OCIError                *errhp, 
                        const OCILobLocator     *locp, 
                        ub2                     *csid );

# 参数说明

参数名 含义
envhp (IN/OUT) 环境句柄
errhp (IN/OUT) 一个错误句柄,当出现错误时可以获取诊断信息
locp (IN) 唯一引用LOB的内部LOB定位器。此定位器必须是从svchp指定的服务器获取的定位器。
csid (OUT) 输出LOB的字符集ID。如果输入LOB类型是BLOB,csid则返回0,因为二进制BLOB没有字符集的概念。csid不能为NULL。

# 规格

无。

# 其他说明

无特殊说明。

# OCILobGetChunkSize()

获取LOB的块大小。

# OCI函数原型

sword OCILobGetChunkSize ( OCISvcCtx       *svchp,
                           OCIError        *errhp,
                           OCILobLocator   *locp,
                           ub4             *chunk_size );

# 参数说明

参数名 含义
svchp (IN) 服务上下文句柄
errhp (IN/OUT) 一个错误句柄,当出现错误时可以获取诊断信息
locp (IN/OUT) 唯一引用LOB的内部LOB定位器。此定位器必须是从svchp指定的服务器获取的定位器。
chunk_size (OUT) 用于存储内部LOB值的块空间大小,这是用户在读取或写入LOB值时建议使用的空间大小。对于BLOB、CLOB和NCLOB,chunk_size都返回字节大小。

# 规格

无。

# 其他说明

无特殊说明。

# OCILobCreateTemporary()

创建临时LOB。

# OCI函数原型

sword OCILobCreateTemporary(OCISvcCtx          *svchp,
                            OCIError           *errhp,
                            OCILobLocator      *locp,
                            ub2                 csid,
                            ub1                 csfrm,
                            ub1                 lobtype,
                            boolean             cache,
                            OCIDuration         duration);

# 参数说明

参数名 含义
svchp (IN) 服务上下文句柄
errhp (IN/OUT) 一个错误句柄,当出现错误时可以获取诊断信息
locp (IN/OUT) 唯一引用LOB的内部LOB定位器。此定位器必须是从svchp指定的服务器获取的定位器。
csid (IN) LOB字符集ID。
csfrm (IN) 缓冲区数据的LOB字符集形式。csfrm参数有两个可能的非零值:SQLCS_IMPLICIT - 数据库字符集ID,用于创建CLOB。OCI_DEFAULT 也可用于隐式创建CLOB。SQLCS_NCHAR - NCHAR 字符集ID,用于创建NCLOB。默认值为SQLCS_IMPLICIT
lobtype (IN) 要创建的LOB类型。有效值包括OCI_TEMP_BLOB - 用于创建临时BLOB,OCI_TEMP_CLOB - 用于创建临时CLOB或NCLOB。
cache (IN) 如果临时LOB应读入缓存,则传递TRUE;如果不应读入缓存,则传递FALSE。对于NOCACHE功能,默认值为FALSE。
duration (IN) 临时LOB 的持续时间。有效值如下:OCI_DURATION_SESSIONOCI_DURATION_CALL

# 规格

该函数支持如下的调用方式:

参数 有效值
csid OCI_DEFAULT
csfrm SQLCS_IMPLICIT
cache FALSE
duration OCI_DURATION_SESSION

# 其他说明

无特殊说明。

# OCILobIsTemporary()

判断LOB是否是临时LOB。

# OCI函数原型

sword OCILobIsTemporary(OCIEnv            *envhp,
                        OCIError          *errhp,
                        OCILobLocator     *locp,
                        boolean           *is_temporary);

# 参数说明

参数名 含义
envhp (IN) 环境句柄
errhp (IN/OUT) 一个错误句柄,当出现错误时可以获取诊断信息
locp (IN) 唯一引用LOB的内部LOB定位器。此定位器必须是从svchp指定的服务器获取的定位器。
is_temporary (OUT) 如果是临时LOB返回TRUE,否则返回FALSE。

# 规格

无。

# 其他说明

无特殊说明。

# OCILobFreeTemporary()

释放临时LOB。

# OCI函数原型

sword OCILobFreeTemporary( OCISvcCtx          *svchp,
                           OCIError           *errhp,
                           OCILobLocator      *locp);

# 参数说明

参数名 含义
svchp (IN/OUT) 服务上下文句柄
errhp (IN/OUT) 一个错误句柄,当出现错误时可以获取诊断信息
locp (IN/OUT) 唯一引用LOB的内部LOB定位器。此定位器必须是从svchp指定的服务器获取的定位器。

# 规格

无。

# 其他说明

无特殊说明。

# OCILobRead2()

该函数用于调用指定的LOB的一部分读入缓冲区。

# OCI函数原型

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定位器。此定位器必须是从svchp指定的服务器获取的定位器。
byte_amtp (IN/OUT) IN - 从数据库读取的字节数。始终用于BLOB ,对于CLOB和NCLOB,只有char_amtp为零时才会使用;OUT - 读入用户缓冲区的字节数。
char_amtp (IN/OUT) IN - 要读入用户缓冲区的最大字符数,BLOB忽略;OUT - 读入用户缓冲区的字符数,BLOB忽略。
offset (IN) 在输入时,这是从LOB值开始的绝对偏移量。对于字符LOB(“CLOB”、“NCLOB”),它是从LOB开始的字符数,对于二进制LOB,它是字节数。
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) bufp中当前片段的长度(以字节为单位)
piecep (IN) OCI_FIRST_PIECE, OCI_NEXT_PIECE, 或 OCI_LAST_PIECE
changed_bufpp (OUT) 如果回调函数希望使用新缓冲区来读取下一块数据,则可以输入新缓冲区的地址。如果该参数设置为NULL,则使用默认的旧缓冲区bufp。
changed_lenp (OUT) 新缓冲区的长度。
csid (IN) 缓冲区数据的字符集ID。
csfrm (IN) 缓冲区数据的字符集形式。csfrm参数有两个可能的非零值:SQLCS_IMPLICIT - 数据库字符集ID,SQLCS_NCHAR - NCHAR字符集ID,默认值为SQLCS_IMPLICIT。如果未指定csfrm,则使用默认值。

# 规格

该函数支持如下的调用方式:

参数 有效值
csid 0或者和当前客户端环境一致的字符集ID

# 其他说明

无特殊说明。