我想创建一个返回VArray的函数,并在select查询中填充值。
我的VArray是:
create type array_squad_t is varray(2) of VARCHAR2(200);
我的功能是
CREATE OR REPLACE FUNCTION test_varray(
id number
)
RETURN array_squad_t
IS
v_array array_squad_t;
BEGIN
v_array(1) := '1 Val';
v_array(2) := '2 Val';
RETURN v_array;
END;
我想称之为
SELECT column_value1, column_value2, e.Name FROM employees e, TABLE ( test_varray(1) );
预期结果:
column_value1 | column_value2 | Name
1 Val | 2 Val | SomeName
答案 0 :(得分:1)
首先,您必须使用构造函数array_squad_t()
正确初始化您的集合。
CREATE OR REPLACE FUNCTION test_varray(
id number
)
RETURN array_squad_t
IS
v_array array_squad_t := array_squad_t() ;
BEGIN
v_array.extend(2);
v_array(1) := '1 Val';
v_array(2) := '2 Val';
RETURN v_array;
END;
然后,您可以使用TABLE
函数和column_value
从这样的select语句中的varray
中获取。
SELECT
column_value,
e.*
FROM
employees e,
TABLE ( test_varray(1) );