DBMS_LOB 可以读取和修改 BLOBCLOB,提供了大部分 LOB 操作。

DBMS_LOB 安全模型

此系统包必须在 SYS 下创建。但是此系统包提供的操作在当前调用用户下执行,而不在 SYS 下执行。

从匿名 PL 块调用的任何 DBMS_LOB 子程序都要使用当前用户权限来执行。从存储子程序调用的任何 DBMS_LOB 子程序都要使用存储子程序所有者的权限来执行。

在创建子程序时,用户可以设置 AUTHID 来指示需要定义者的权限还是调用者的权限。如下例所示:

  1. CREATE PROCEDURE proc1 AUTHID DEFINER ...

或者

  1. CREATE PROCEDURE proc1 AUTHID CURRENT_USER ...

DBMS_LOB 的数据类型

数据类型描述

BLOB

源或目标二进制 LOB。

RAW

源或目标 RAW 缓冲区(与 BLOB 一起使用)。

CLOB

源或目标字符 LOB。

VARCHAR2

源或目标字符缓冲区(与 CLOB 一起使用)。

INTEGER

指定缓冲区或 LOB 的大小,LOB 的偏移量或要访问的数量。

DBMS_LOB 使用说明

所有 DBMS_LOB 子程序都基于 LOB 定位器进行工作。为了成功完成 DBMS_LOB 子程序操作,必须提供一个输入定位器,该输入定位器代表数据库表空间或外部文件系统中已经存在的 LOB。

所有 DBMS_LOB API 现在都将支持对远程 LOB 定位器的操作。所有使用两个定位器的 API 必须将两个 LOB 并置在一个数据库中。

DBMS_LOB 子程序概览

下表列出了 OceanBase 数据库当前版本所支持的 DBMS_LOB 子程序和简要描述。

子程序

描述

APPEND

将源 LOB 的内容附加到目标 LOB。

CLOSE

关闭先前打开的内部或外部 LOB。

ERASE

擦除全部或部分 LOB。

GETLENGTH

获取 LOB 值的长度。

ISOPEN

检查是否已经使用输入定位器打开了 LOB。

INSTR

返回在 LOB 模式中第 n 次发生匹配位置。

OPEN

在指示的模式下打开 LOB(内部、外部或临时)。

READ

从指定偏移量开始读取 LOB 的数据。

SUBSTR

从指定的偏移量开始返回部分 LOB 值。

TRIM

将 LOB 值修剪为指定的较短长度。

WRITE

从指定的偏移量开始将数据写入 LOB。

WRITEAPPEND

将缓冲区写入 LOB 的末尾。