文档

全局集合类型

更新时间:

区别于定义在PL/SQL定义域中的局部集合类型,您可以直接用一条SQL语句定义全局集合类型(standalone collection type)。

注意事项

目前,PL/SQL支持声明全局变长数组和全局嵌套表。声明它们的语法与声明局部集合类型的语法除了多加一个CREATE关键字以外没有区别。

示例

以下是一个声明全局集合类型的示例。

-- 声明全局变长数组
CREATE TYPE v_type IS VARRAY(10) OF INT;

-- 声明全局嵌套表
CREATE TYPE nt_type IS TABLE OF INT;

您可以像使用局部集合类型一样,在PL/SQL中使用它们。以下是一个使用全局集合类型的示例。

DECLARE
  v v_type := v_type(1, 2, 3);
BEGIN
  FOR i IN v.first..v.last LOOP
    RAISE NOTICE '%', v(i);
  END LOOP;
END;

结果显示如下:

NOTICE:  1
NOTICE:  2
NOTICE:  3
DO

如果同名的全局集合类型和局部集合类型同时存在,由于就近查找原则,PL/SQL会使用局部集合类型。以下是一个优先使用局部集合类型的示例。

DECLARE
  TYPE v_type IS VARRAY(10) OF VARCHAR(10);
  v v_type := v_type('a', 'b', 'c');
BEGIN
  FOR i IN v.first..v.last LOOP
    RAISE NOTICE '%', v(i);
  END LOOP;
END;

结果显示如下:

NOTICE:  a
NOTICE:  b
NOTICE:  c
DO