DBMS_LOB 可以读取和修改 BLOB
和 CLOB
,提供了大部分 LOB 操作。
DBMS_LOB 安全模型
此系统包必须在 SYS
下创建。但是此系统包提供的操作在当前调用用户下执行,而不在 SYS
下执行。
从匿名 PL 块调用的任何 DBMS_LOB 子程序都要使用当前用户权限来执行。从存储子程序调用的任何 DBMS_LOB 子程序都要使用存储子程序所有者的权限来执行。
在创建子程序时,用户可以设置 AUTHID
来指示需要定义者的权限还是调用者的权限。如下例所示:
CREATE PROCEDURE proc1 AUTHID DEFINER ...
或者
CREATE PROCEDURE proc1 AUTHID CURRENT_USER ...
DBMS_LOB 的数据类型
数据类型 | 描述 |
---|---|
BLOB | 源或目标二进制 LOB。 |
RAW | 源或目标 |
CLOB | 源或目标字符 LOB。 |
VARCHAR2 | 源或目标字符缓冲区(与 |
INTEGER | 指定缓冲区或 LOB 的大小,LOB 的偏移量或要访问的数量。 |
DBMS_LOB 使用说明
所有 DBMS_LOB 子程序都基于 LOB 定位器进行工作。为了成功完成 DBMS_LOB 子程序操作,必须提供一个输入定位器,该输入定位器代表数据库表空间或外部文件系统中已经存在的 LOB。
所有 DBMS_LOB API 现在都将支持对远程 LOB 定位器的操作。所有使用两个定位器的 API 必须将两个 LOB 并置在一个数据库中。
DBMS_LOB 子程序概览
下表列出了 OceanBase 数据库当前版本所支持的 DBMS_LOB 子程序和简要描述。
子程序 | 描述 |
---|---|
将源 LOB 的内容附加到目标 LOB。 | |
关闭先前打开的内部或外部 LOB。 | |
擦除全部或部分 LOB。 | |
获取 LOB 值的长度。 | |
检查是否已经使用输入定位器打开了 LOB。 | |
返回在 LOB 模式中第 | |
在指示的模式下打开 LOB(内部、外部或临时)。 | |
从指定偏移量开始读取 LOB 的数据。 | |
从指定的偏移量开始返回部分 LOB 值。 | |
将 LOB 值修剪为指定的较短长度。 | |
从指定的偏移量开始将数据写入 LOB。 | |
将缓冲区写入 LOB 的末尾。 |