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;
        ...