1

我想创建一个返回 VArray 并填充选择查询中的值的函数。

我的 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
4

1 回答 1

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从这样varray的 select 语句中获取。

SELECT
    column_value,
    e.*
FROM
    employees e,
    TABLE ( test_varray(1) );
于 2017-12-06T19:03:15.257 回答