区别于定义在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
文档内容是否对您有帮助?