select query调用一个在Oracle中返回varray的函数

时间:2017-12-06 06:24:13

标签: oracle select plsql oracle11g varray

我想创建一个返回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

1 个答案:

答案 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) );