将Oracle Table数组类型转换为单个表数组类型

时间:2015-09-11 23:42:51

标签: oracle

有没有办法转换所有表数组类型,以便它们都是相同的类型。在这种情况下,像generic_array类型?我试图按顺序返回字母表而没有任何欺骗,但首先我需要将所有数组转换为相同的类型。

declare
            type type1_array is table of varchar2(80);
            type type2_array is table of varchar2(80);
            type type3_array is table of varchar2(80);
            type generic_array is table of varchar2(80);

            TableType1 type1_array DEFAULT type1_array();
            TableType2 type2_array DEFAULT type2_array();
            TableType3 type3_array DEFAULT type3_array();
            TableTypeGeneric generic_array DEFAULT generic_array();

begin        
            TableType1 := type1_array ('a', 'b', 'c', 'd', 'e', 'k', 'f', 'g', 'h', 'i');
            TableType2 := type2_array ('c', 'd', 'f', 'h', 'i', 'j', 'm');
            TableType3 := type3_array ('j', 'l', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z');

            TableTypeGeneric  := cast(type1_array as generic_array) union cast(type2_array as generic_array) union cast(type3_array as generic_array);

end;

1 个答案:

答案 0 :(得分:1)

从一开始就声明为同一类型:

DECLARE
  TYPE Varchar2_Array IS TABLE OF VARCHAR2(80);

  array1 Varchar2_Array := Varchar2_Array('a', 'b', 'c', 'd', 'e', 'k', 'f', 'g', 'h', 'i');
  array2 Varchar2_Array := Varchar2_Array('c', 'd', 'f', 'h', 'i', 'j', 'm');
  array3 Varchar2_Array := Varchar2_Array('j', 'l', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z');
  array4 Varchar2_Array;
BEGIN
  array4  := array1 MULTISET UNION DISTINCT array2 MULTISET UNION DISTINCT array3;
END;