WRITEAPPEND 存储过程将指定数量的数据写入内部 LOB 的末尾。数据是由 buffer
参数写入的。
语法
DBMS_LOB.WRITEAPPEND (
lob_loc IN OUT NOCOPY BLOB,
amount IN INTEGER,
buffer IN RAW);
DBMS_LOB.WRITEAPPEND (
lob_loc IN OUT NOCOPY CLOB ,
amount IN INTEGER,
buffer IN VARCHAR);
参数解释
参数 | 解释 |
---|---|
lob_loc | 内部 LOB 要写入的定位符。详细信息请参见 DBMS_LOB 使用说明。 |
amount | 要写入的字节数(对于 |
buffer | 用于写的输入缓冲区。 |
说明
如果输入量大于缓冲区中的数据,则会出现错误。如果输入量小于缓冲区中的数据,则仅将缓冲区中的字节或字符量写入 LOB 的末尾。
异常情况
Exception | Description |
---|---|
VALUE_ERROR |
|
INVALID_ARGVAL | 以下情况之一:
|
QUERY_WRITE | 无法在查询或 PDML 并行执行服务器中执行 LOB 写入。 |
BUFFERING_ENABLED | 如果在 LOB 上启用了缓冲,则无法在启用 LOB 缓冲的情况下执行操作。 |
使用说明
VARCHAR
缓冲区的形式必须与CLOB
参数的形式匹配。如果输入 LOB 参数的类型为CLOB
,则缓冲区必须包含CHAR
数据。从客户端调用
DBMS_LOB.WRITEAPPEND
时(例如,在 OBClient 中的BEGIN
/END
块中),缓冲区必须包含客户端字符集中的数据。在将缓冲区数据写入 LOB 之前,数据库会将客户端缓冲区转换为服务器的字符集。您不必将
LOB
操作包裹在 Open / Close 接口中。如果在执行操作之前没有打开 LOB,则在调用过程中会更新LOB
列上的功能索引和域索引。但是,如果在执行操作之前打开了 LOB,则必须在提交事务之前将其关闭。关闭内部 LOB 时,它将更新 LOB 列上的功能索引和域索引。如果未将 LOB 操作包裹在 Open / Close API 内,则每次写入 LOB 时都会更新功能索引和域索引。这会对性能产生不利影响。因此,建议您将对 LOB 的写操作包含在
OPEN
或CLOSE
语句中。必要时,在附加到 LOB 前, 由 WRITEAPPEND 获取 LOB。