使用注意事项如下:

  • 只有 DML 语句可以指定参数。

  • DML 语句中只有返回结果集的语句可以被获取。

  • DBMS_SQL 创建的游标只在当前 session 可用,其它 session 无法访问。

DBMS_SQL 为 SYS 用户所有,是由 AUTHID CURRENT_USER 编译的系统包。从匿名 PL 块调用的任何 DBMS_SQL 子程序都以当前用户的权限运行。

下表为 DBMS_SQL 的 PARSE 存储过程的 参数所使用的常量。

以下使用说明描述了如何处理查询、更新、插入和删除。

  1. 通过调用 DEFINE_COLUMN 子程序指定 SELECT 语句返回值的变量。

  2. 通过调用 EXECUTE 函数来运行 SELECT 语句。

  3. 调用 FETCH_ROWS 函数检索满足查询的行。

  4. 调用 COLUMN_VALUE 子程序来确定 FETCH_ROWS 函数返回的查询检索的列值。

如果使用动态 SQL 处理 INSERT、UPDATE 或者 DELETE,则必须通过调用 EXECUTE 函数运行 INSERT、UPDATE 或 DELETE 语句。

DBMS_SQL 执行流程如下:

  1. OPEN_CURSOR

  2. BIND_VARIABLE

  3. DEFINE_COLUMN

  4. EXECUTE

  5. FETCH_ROWS

  6. COLUMN_VALUE

  7. CLOSE_CURSOR

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

子程序

将指定值绑定到指定变量。

COLUMN_VALUE

返回游标中指定元素的值。

关闭指定光标并释放内存。

DEFINE_COLUMN

定义通过指定游标选取的列,仅与 SELECT 语句一起使用。

执行指定的游标。

FETCH_ROWS

从指定游标中获取某行数据。

返回新建游标的 ID 号。

PARSE

解析指定的语句。