SPL 支持使用 SYS_REFCURSOR 内置数据类型以及通过创建一种 REF CURSOR,然后声明该类型的变量,来声明游标变量。SYS_REFCURSOR 是一种 REF CURSOR 类型,允许任何结果集与之关联。这被称为弱类型  REF CURSOR。

SYS_REFCURSOR 和用户定义的 REF CURSOR 变量只有声明是不同的。在两种游标类型中,打开游标、选择游标和关闭游标等剩余用法都是相同的。对于本章的其余部分,我们的示例主要使用 SYS_REFCURSOR 游标。您只需要更改示例中的声明部分,以使其适用于用户定义的 REF CURSOR。

说明 强类型 REF CURSOR 要求结果集符合声明的数字和具有兼容数据类型的字段顺序,并且还可以选择返回结果集。

声明 SYS_REFCURSOR 游标变量

以下是声明 SYS_REFCURSOR 游标变量的语法:

name SYS_REFCURSOR;

name 是分配给游标变量的标识符。

以下是 SYS_REFCURSOR 变量声明的示例。

DECLARE
    emp_refcur      SYS_REFCURSOR;
        ...

声明用户定义的 REF CURSOR 类型变量

您必须执行两个不同的声明步骤,才能使用用户定义的 REF CURSOR 变量:

  • 创建引用的游标 TYPE。
  • 基于该 TYPE 声明实际的游标变量。

用于创建用户定义的 REF CURSOR 类型的语法如下所示:

TYPE cursor_type_name IS REF CURSOR [RETURN return_type];

以下是游标变量声明的示例。

DECLARE
    TYPE emp_cur_type IS REF CURSOR RETURN emp%ROWTYPE;
    my_rec emp_cur_type;
        ...