【问题标题】:select query call a function which return varray in Oracle选择查询调用在 Oracle 中返回 varray 的函数
【发布时间】:2017-12-06 06:24:13
【问题描述】:

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

【问题讨论】:

    标签: oracle select plsql oracle11g varray


    【解决方案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_valuevarray 中获取数据。

    SELECT
        column_value,
        e.*
    FROM
        employees e,
        TABLE ( test_varray(1) );
    

    【讨论】:

    • 它对我有用,非常感谢。但是我们在 1 列 2 行中获取数据(因为数组大小为 2),我们可以在 2 个单独的列中获取数据吗?
    • @PramendraRaghuwanshi:你能详细说明一下吗?或更好地用预期结果更新问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-12
    • 1970-01-01
    • 2018-06-14
    • 1970-01-01
    • 2016-01-11
    • 2021-02-20
    • 2012-02-22
    相关资源
    最近更新 更多