集合类型构造器(constructor)是系统定义的与集合类型同名的函数,它返回该类型的集合。目前,只有变长数组和嵌套表支持使用构造函数来初始化集合变量。
语法
type_name ( [ value [, value ]... ] )
如果参数列表为空,则构造函数返回一个空集合。否则,构造函数返回包含指定元素的集合。由于变长数组类型具有最大长度的限制,因此构造函数包含的值的个数不能超过最大长度。否则,数据库不会将其识别为构造函数,而是尝试将其视为一个普通函数。
示例
DECLARE
TYPE varray_type IS VARRAY(2) OF INT;
v varray_type := varray_type(1, 2, 3);
BEGIN
END;
结果显示如下:
ERROR: function varray_type(integer, integer, integer) does not exist
LINE 1: varray_type(1, 2, 3)
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
QUERY: varray_type(1, 2, 3)
CONTEXT: PL/SQL function inline_code_block line 4 during statement block local variable initialization
以下示例展示将集合变量初始化为空,以及初始化为包含特定元素:
DECLARE
TYPE Friend IS VARRAY(4) OF VARCHAR(10);
good_friend Friend := Friend(); -- 初始化为空
PROCEDURE print_friend (heading VARCHAR) -- 局部过程
IS
BEGIN
RAISE NOTICE '%', heading;
IF good_friend.COUNT = 0 THEN
RAISE NOTICE 'Empty';
ELSE
FOR i IN 1..2 LOOP
RAISE NOTICE '%.%', i, good_friend(i);
END LOOP;
END IF;
RAISE NOTICE '---';
END;
BEGIN
print_friend('Friend:');
good_friend := Friend('Zhang', 'Wu'); -- 初始化为指定值
print_friend('Friend:');
END;
结果显示如下:
NOTICE: Friend:
NOTICE: Empty
NOTICE: ---
NOTICE: Friend:
NOTICE: 1.Zhang
NOTICE: 2.Wu
NOTICE: ---
DO
文档内容是否对您有帮助?